对于itteratable对象有适当的phpdoc评论吗?
发布时间:2020-12-13 22:51:51 所属栏目:PHP教程 来源:网络整理
导读:我在尝试为以下代码示例获取正确的自动完成时遇到了一些问题.我在Win7机器上使用 PHPStorm 7. 首先只是一个简单的课程. /** * Class myObject */class myObject{ /** * some method */ public function myMethod() { // do something }} 这个是集合类,它可以
我在尝试为以下代码示例获取正确的自动完成时遇到了一些问题.我在Win7机器上使用
PHPStorm 7.
首先只是一个简单的课程. /** * Class myObject */ class myObject { /** * some method */ public function myMethod() { // do something } } 这个是集合类,它可以包含先前类的多个实例,并实现ItteratorAggregate接口. /** * Class myCollection */ class myCollection implements IteratorAggregate { /** * @var myObject[] */ protected $_objects = array(); /** * @param myObject $object * @return myCollection */ public function add(myObject $object) { $this->_objects[] = $object; return $this; } /** * @return ArrayIterator */ public function getIterator() { return new ArrayIterator($this->_objects); } } 这是代码示例. $collection = new myCollection; $collection->add(new myObject); $collection->add(new myObject); foreach ($collection as $object) { $object->myMethod(); // gets no autocompletion } 正如您可能已经猜到的那样(并在示例中读取)myMethod()调用未自动完成,并且正在代码分析中列出.我找到的唯一方法是为$object添加一个注释块,我发现,说实话,非常讨厌. /** @var $object myObject */ foreach ($collection as $object) { $object->myMethod(); // gets autocompletion now,but sucks } 那么,关于如何解决这个问题的任何想法或基本知识? 解决方法
您的
/ ** @var $object myObject * / block确实是实现这一目标的正确方法.你期望做的工作的语法, / ** 虽然它是非正式使用并且正在进行标准化工作,但它不是标准的phpdoc表示法.在这种标准化确实发生之前,识别它的IDE可能会被击中或者错过.实际上,$object local var block的IDE覆盖率也是命中注定. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |