自动完成foreach中的变量

时间:2012-03-11 09:40:11

标签: php netbeans autocomplete foreach phpdoc

我有以下代码:

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()。
  • 的类
  • 我正在使用Netbeans IDE。

6 个答案:

答案 0 :(得分:16)

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

答案 1 :(得分:4)

这应该有效:

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

    public function loopAllSuppliers()
    {
        foreach($this->suppliers as $supplier) {
        }
    }
}

答案 2 :(得分:3)

对我来说这不起作用:

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

我的解决方案:

foreach ($suppliers as $supplier) {
    if($suppliers instancof Supplier) {
        $supplier->
    }
}

答案 3 :(得分:2)

如果$ 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
    }
}

答案 4 :(得分:0)

您可以通过执行以下操作来实现此目标(在netbeans中):

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

答案 5 :(得分:-1)

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