J'ai le code suivant:
class Orders{ /** * * @var Supplier */ private $suppliers; //Array of Supplier function loopAllSuppliers(){ foreach($this->suppliers as $supplier){ $supplier->/*no suggestion*/ //Can't get the method's to show here $this->suppliers->getSupplierName(); //methods in class Supplier show normally here } } }
6 Réponses :
Essayez ceci si $ ceci-> Fournisseurs est un tableau:
function loopAllSuppliers(){ foreach($this->suppliers as $key => $supplier){ $supplier->/*no suggestion*/ //Can't get the method's to show here $this->suppliers[$key]->getSupplierName(); //should work $this->suppliers->getSupplierName(); //methods in class Supplier show normally here } }
Dans votre solution, j'accède toujours à la $ ceci-> fournisseurs code> pour obtenir les méthodes. Ce que j'essaie, c'est d'accéder aux méthodes de
$ fournisseur code>.
C'est la même chose. Si vous bouclez à travers une gamme d'éléments, vous pouvez accéder aux méthodes d'un élément de chaque sens. Peut-être que vous pourriez nous fournir un exemple de travail qui ne se comporte pas comme vous le souhaitez.
class Orders{ /** * * @var Supplier */ private $suppliers; function loopAllSuppliers(){ foreach($this->suppliers as $supplier){ /* @var $supplier Supplier */ //Must declare the type again inside the foreach as Netbeans doesn't support // defining variable as arrays in doc blocks, yet. } } }
Pourquoi pas seulement foreach ($ ceci-> fournisseurs AS / * @var fournisseur * / $ fournisseur) code>
Vous pouvez définir des vars sous forme de tableaux dans NetBeans: / ** @var fournisseur [] * /
Cela devrait fonctionner:
class Orders { /** * @var Supplier[] */ private $suppliers; public function loopAllSuppliers() { foreach($this->suppliers as $supplier) { } } }
Vous pouvez y parvenir (dans Netbeans) en procédant comme suit:
foreach ($suppliers as /* @var $supplier Supplier */ $supplier) { $supplier->/*should have suggestions*/ }
Pour moi, cela ne fonctionne pas: Ma solution: P> foreach ($suppliers as $supplier) {
if($suppliers instancof Supplier) {
$supplier->
}
}
avec PHP7 et Phpstorm, je peux utiliser:
use path/to/Supplier; //needs the path for your class Supplier foreach ($suppliers as /* @var $supplier Supplier */ $supplier) { echo $supplier->getName(); //Output each Name }
Si votre
$ fournisseurs code> est un tableau de
fournisseur code>, alors votre annotation phpdoc est fausse. Dans d'autres IDes, vous pouvez annoter un tel tableau comme
@var fournisseur [] code>, avez-vous essayé cela?
@DCoder OUI
$ Fournisseurs CODE> est une matrice de
fournisseur code> et j'ai essayé
@var fournisseur [] code>, mais ça ne marche pas. En train de le modifier en
@var fournisseur [] Code> Aucune suggestion apparaît pour
$ ceci-> Fournisseurs -> Code>
Eh bien, si c'est un tableau, il n'a pas réellement aucune méthode, n'est-ce pas?
hmmmm Il semble que la solution consiste à trouver l'annotation pour déclarer une variable en tant que réseau d'objets dans NetBeans. Je ne trouve pas la syntaxe pour cela.
La syntaxe d'annotation / balise appropriée ici est en effet "Var fournisseur []". Cela sera bientôt normalisé et les IDES commenceront probablement à ajouter une autocopompetion basée sur la vue de cette syntaxe un jour après sa normalisation.