PhpStorm version 2020.3 montre une erreur sur $timestamps
dans mon modèle Laravel :
{Model} et HasTimestamps définissent la même propriété timestamps
Il s'agit d'un bogue qui a été introduit dans le module nouveau version de PhpStorm.
Il n'est pas possible de désactiver l'avertissement puisqu'il s'agit d'une inspection de l'annotateur. Je ne vous recommande pas non plus de modifier votre code dans le seul but de corriger cet avertissement, car il s'agit d'un bogue de l'IDE qui sera traité dans le cadre de leur programme de développement. suivant patch. S'il n'y a pas d'effets secondaires importants, attendez la sortie du patch !
Ce bogue a été corrigé dans PhpStorm. 2020.3.1 .
Je dirais que ce n'est pas un problème de tempête PHP mais un problème de Laravel. php.net/traits#language.oop5.interfaces.examples.ex1 Votre solution est probablement valable si le reste du code n'accède pas directement à la propriété, puisqu'elle est déclarée publique. Réaffecter la propriété dans une construction semble pire mais est peut-être plus solide ?
@hatef a raison, vous ne devriez pas changer votre code, je trouve juste que c'est très ennuyeux visuellement, j'ai en fait dû revenir en arrière puisque ma version actuelle de xdebug n'est pas compatible avec cette version de PHPStorm, et #at#Johan je ne suis pas sûr de l'avoir fait à cause de l'avertissement mais cela n'a pas de réel avantage, et aussi je ne vois pas de "super" négatif puisque la méthode est publique
@Johan, ça doit être un bug de PhpStorm. En PHP, une classe ne peut pas utiliser un trait et surcharger une propriété de ce trait. Mais ce n'est pas le cas, celui qui surcharge est une sous-classe de la classe qui utilise le trait. Et c'est tout à fait légal.
Ceci est corrigé sur PHPStrom 2020.3.1 Preview https://blog.jetbrains.com/phpstorm/2020/12/phpstorm-2020-3-1-preview/
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
0 votes
Je pense que timestamps est un mot clé réservé, vous ne pouvez pas l'utiliser.
0 votes
@AbdullahAlMamun, dans Laravel, la variable publique $timestamps dans les modèles indique que le modèle n'utilise pas created_at et updated_at - par défaut $timestamps = true. Ce n'est pas un mot-clé réservé. J'ai le même problème et je pense qu'il s'agit d'un bug dans la dernière mise à jour et qu'il correspond à vendor/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/HasTimestamps.php. Cependant, ce n'est pas un blocage et tout fonctionne normalement, dans mon cas du moins.
0 votes
Strabek, oui, vous avez raison. Peut-être que c'est un bug de phpstorm.