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