Existe-t-il une option pour informer PhpStorm que la méthode qu'elle dit n'existerait pas, dépasse sa portée et est définie ailleurs?Comment informer PhpStorm sur la position de la méthode utilisée dans DependencyInjection, qu'elle "pense" qui n'existe pas?
En mots plus simples:
Je exécution de la méthode:
Db::transactional($this)->transactionalUpdate($result);
J'ai définition de la méthode aussi:
public function transactionalUpdate(ImportantObjectButNotMuch $baconWithButter)
{
echo 'Do a lot of tricks...';
}
Malheureusement PhpStorm ne sait pas que l'exécution: ->transactionalUpdate($result);
doit exécuter public function transactionalUpdate
.
Existe-t-il une option pour écrire PhpDoc ou une autre balise pour l'informer que dans le cas d'une refactorisation de nom, il devrait également changer le nom de la fonction d'origine?
P.S. Ma structure de classe ressemble à ceci:
class Db
{
public static function transactional($object)
{
return TransactionalProxy::newInstance($object); //3. It returns ApiObject object
}
}
class ApiObject
{
public function update_record()
{
//1. I am starting from there
$result = new ImportantObjectButNotMuch();
Db::transactional($this)->transactionalUpdate($result); //2. Next i am passing $this to Db class, to transactional method //4. It should run below transactionalUpdate method
}
public function transactionalUpdate(ImportantObjectButNotMuch $baconWithButter)
{
echo 'Do a lot of tricks...'; //5. It ends there, it is working but PhpStorm doesn't see it
}
}
EDIT APRÈS RÉPONSE:
@Nukeface et @Dmitry m'a fait venir avec la réponse à ma question: permet de voir à nouveau dans ma structure de fichiers:
class Db
{
public static function transactional($object)
{
return TransactionalProxy::newInstance($object); //3. It returns ApiObject object
}
}
class ApiObject
{
public function update_record()
{
//1. I am starting from there
$result = new ImportantObjectButNotMuch();
//EDIT//Db::transactional($this)->transactionalUpdate($result); //2. Next i am passing $this to Db class, to transactional method //4. It should run below transactionalUpdate method
/** @var self $thisObject */
//Line above informs PhpStorm that $thisObject is ApiObject indeed
$thisObject = Db::transactional($this)
$thisObject->transactionalUpdate($result);
}
public function transactionalUpdate(ImportantObjectButNotMuch $baconWithButter)
{
echo 'Do a lot of tricks...'; //5. It ends there, it is working but PhpStorm doesn't see it
}
}
Je ne suis pas sûr de comprendre la question. 'Db :: transactional ($ this)' retourne un objet qui a la méthode 'transactionalUpdate' et que vous voulez compléter automatiquement pour cette méthode? – Dmitry
Merci pour votre réponse. J'ai la classe 'Db' qui a la méthode' transactional', à cette méthode je passe l'objet '$ this' qui contient la définition de la méthode' transactionalUpdate'. Donc, je veux informer PhpStorm que 'Db :: transactional ($ this) -> transactionalUpdate ($ result);' line fait référence à la méthode définie dans '$ this'. Dites-moi s'il vous plaît si ce n'est pas assez clair :) – Dominik
Vous pouvez ajouter le bloc phpdoc '@ method' à la classe de' $ this'. https://docs.phpdoc.org/references/phpdoc/tags/method.html – Dmitry