Автозаполнение для переменной внутри foreach - PullRequest
8 голосов
/ 11 марта 2012

У меня есть следующий код:

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
        }
    }
}

Проблема проста.Я просто хочу иметь возможность объявить тип для моей переменной $supplier, например, как я это сделал с $suppliers.

Примечания:

  • Поставщик - это класс, который имеетоткрытый метод getSupplierName ().
  • Я использую IDE Netbeans.

Ответы [ 6 ]

16 голосов
/ 01 апреля 2012
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.
        }
    }
}
4 голосов
/ 23 ноября 2012

Это должно работать:

class Orders
{
    /**
     * @var Supplier[]
     */
    private $suppliers;

    public function loopAllSuppliers()
    {
        foreach($this->suppliers as $supplier) {
        }
    }
}
3 голосов
/ 18 августа 2016

для меня это не работа:

foreach ($suppliers as /* @var $supplier Supplier */ $supplier) {
    $supplier->/*should have suggestions*/
}

мое решение:

foreach ($suppliers as $supplier) {
    if($suppliers instancof Supplier) {
        $supplier->
    }
}
2 голосов
/ 11 марта 2012

попробуйте, если $ this-> поставщики - это массив:

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
    }
}
0 голосов
/ 20 сентября 2018

С PHP7 и PHPStorm я могу использовать:

use path/to/Supplier; //needs the path for your class Supplier

foreach ($suppliers as /* @var $supplier Supplier */ $supplier) {
    echo $supplier->getName(); //Output each Name
}
0 голосов
/ 19 марта 2014

Вы можете достичь этого (в netbeans), выполнив следующие действия:

    foreach ($suppliers as /* @var $supplier Supplier */ $supplier) {
        $supplier->/*should have suggestions*/
    }
...