39 votes

PhpStorm : {Model} et HasTimestamps définissent la même propriété timestamps (Laravel)

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

enter image description here

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.

44voto

Hatef Points 176

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 !


Mise à jour

Ce bogue a été corrigé dans PhpStorm. 2020.3.1 .

10voto

Alberto Garcia Points 21

Cela semble être un bug de PHPStorm.

Si cela vous dérange, vous pouvez changer public $timestamps = false; a

public function usesTimestamps() : bool{
    return false;
}

0 votes

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 ?

0 votes

@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

0 votes

@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.

2voto

C'est un bug de PhpStorm, que j'ai corrigé avec define as property sur la classe phpdoc.

Comme ça :

Php storm bug fix

Vous pouvez également mettre à jour votre PhpStorm.

1voto

Anurak Kingkaew Points 41

Ceci est corrigé sur PHPStrom 2020.3.1 Preview https://blog.jetbrains.com/phpstorm/2020/12/phpstorm-2020-3-1-preview/

-2voto

Très simple, ajoutez (bool) ou (boolean), regardez : public $timestamps = (boolean) false ;

0 votes

Produit une erreur : L'expression constante contient des opérations invalides dans ...

Prograide.com

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.

Powered by:

X