2017-10-12 1 views
0

Avec .phpstorm.meta.php, vous pouvez écraser le type de retour de vos méthodes de classe. Par exemple:Comment faire pour que le retour de la fonction soit un tableau d'instances d'une classe dynamique via le fichier .phpstorm.meta.php?

// .phpstorm.meta.php 

namespace PHPSTORM_META 
{ 
    $STATIC_METHOD_TYPES = [ 
     \Acme\Node::closest('') => [ 
     "" == "@", 
     ], 
    ]; 
} 

L'exemple ci-dessus permet de PhpStorm comprendre le retour de $node->closest(SomeNodeType::class) est une instance de SomeNodeType.

Cependant, ma question est de savoir comment faire comprendre à PhpStorm qu'une fonction renvoie un tableau d'instances d'un type donné.

Par exemple: $node->findAllOfType(SomeNodeType::class) retournerait un tableau de SomeNodeType instances (normalement on utiliserait SomeNodeType[] si elle ne serait pas dynamique).

Tentatives d'utilisation "@[]" ou "@Iterator" au lieu de "@", dans l'exemple de code ci-dessus, échoué.

Répondre

2

C'est simplement not supported ... sauf si vous pouvez essayer de lister tous les types possibles manuellement au lieu d'utiliser une règle générique unique (peut peut fonctionner en théorie - désolé, ne l'ai pas essayé moi-même).

https://youtrack.jetbrains.com/issue/WI-27832 - regarder cela et des billets connexes (star/vote/commentaire) pour être averti de tout progrès.

+0

Dommage que ce ne soit pas supporté, mais merci de le noter! Continuera à suivre le problème et à mettre à jour ses modifications. – Jeremy