Netbeans Intellisense PHP 迭代器接口

Posted

技术标签:

【中文标题】Netbeans Intellisense PHP 迭代器接口【英文标题】:Netbeans Intellisense PHP Iterator Interface 【发布时间】:2011-05-05 21:36:35 【问题描述】:

我正在使用 Netbeans 6.9 并编写一个实现 Iterator 接口的 php 类。当我迭代对象中的项目时,我希望 IDE 提供 Intellisense。它似乎适用于 Zend 框架,因为我注意到当迭代 Zend_Db_Rowset 时,我会得到 Zend_DB_Row 的智能感知。比如我写的时候:

foreach($rowset as $row) 
  $row->delete();

当我键入“$row->”时,Netbeans 会弹出 Zend_Db_Row_Abstract 的成员函数的代码提示。不幸的是,我不能让它为我自己的代码工作。以下是我尝试开始工作的示例:

class Foo 

    private $value;

    /**
     *
     * @param string $value
     */
    public function setValue($value) 
        $this->value = $value;
    

    /**
     *
     * @return string
     */
    public function getValue() 
        return $this->value;
    



class It implements Iterator 

    private $data;

    public function __construct($data) 
        $this->data = $data;
    

    /**
     *
     * @return Foo
     */
    public function current() 
        return current($this->data);
    

    /**
     *
     * @return Foo
     */
    public function key() 
        return key($this->data);
    

    /**
     *
     * @return Foo
     */
    public function next() 
        return next($this->data);
    

    /**
     *
     * @return Foo
     */
    public function rewind() 
        return reset($this->data);
    

    /**
     *
     * @return bool
     */
    public function valid() 
        return key($this->data) !== null;
    



$a = new Foo();
$b = new Foo();
$a->setValue('Hello');
$b->setValue('Bye');
$testData = array($a, $b);
$myIt = new It($testData);
foreach ($myIt as $obj) 
    echo $obj->getValue();

奇怪的是,intellisense 似乎认为 $obj 是 It 类型的对象,而我希望它认为(实际上它是)Foo 类型的对象。

【问题讨论】:

我刚试了一下,奇怪的是我在foreach 循环内的/** @var $obj Foo */ 的常用解决方案似乎也不起作用。 Netbeans (6.9.1) 非常确定 $obj 是 It。奇怪。 尝试删除 /** 中的第二个 *。 +1 我仍然认为这是 Netbeans 中的一个错误。从当前方法中提取类型应该不难。显然,Netbeans 认为我们的 PHP 编码人员只迭代数组 【参考方案1】:

在循环体中,您可以在注释中提供类型提示。

/* @var $obj Foo */

+1 支持 Brian Fisher 的建议。

【讨论】:

以上是关于Netbeans Intellisense PHP 迭代器接口的主要内容,如果未能解决你的问题,请参考以下文章

在 Netbeans 中使用 XDebug 调试 PHP

TODO任务netbeans php

NetBeans PHP 不会因异常而中断

NetBeans PHP格式规则

内置 PHP 函数的 Netbeans 代码高亮显示

netBeans 修改新建php文件头部注释模板