En général, voici comment je reçois mon IDE (PhpStorm 2017) de reconnaître le type d'une variable que je ne reçois pas de déclarer officiellement:PHPDoc et PhpStorm: indiquent le type de retour d'une méthode magique
/*
* @var User $user
*/
foreach($users as $user){}
L'EDI sait alors que $user
est de classe User
. Maintenant, je suis face à une situation avec cette ligne:
Yii::app()->user->login()
Plus précisément, l'IDE n'a aucune idée de quel type user
est. Je reçois l'avertissement:
Champ accessible via la méthode magique
J'ai donc essayé de préciser avec:
/**
* @var User Yii::app()->user
*/
Yii::app()->user->login();
Mais cela ne fait pas de différence. Comment puis-je aider l'EDI à résoudre le type?
* "J'ai donc essayé de préciser avec:'/** @var utilisateur :: Yii app() -> user */'" * - cela ne fonctionne pas comme ça - de cette façon, vous pouvez taper seulement une variable de premier niveau - pas une propriété d'une autre classe. Le meilleur moyen est d'aller avec la réponse de @ Dmitry si vous avez besoin d'un tel indice une seule fois (mais il peut * avoir * des effets secondaires)). Sinon faites-le localement via une variable intermédiaire comme le suggère @Nima (mais vous devrez le faire à chaque endroit où vous l'utiliserez). – LazyOne
Une alternative mais une solution possible - passez 'Yii :: app() -> user' comme paramètre à votre appel de constructeur/méthode de classe etc - de cette façon, vous pouvez facilement taper la variable de classe interne. – LazyOne
@LazyOne: "* Le meilleur moyen est d'aller avec la réponse de Dmitry si vous avez besoin d'un tel indice une seule fois *" La réponse de Dmitry semble fonctionner partout Yii :: app() -> user' apparaît non seulement au même endroit. Je l'essaie avec juste sa 2ème classe ('CApplication'); Je ne sais pas ce que les effets secondaires seraient – BeetleJuice