Proper phpdoc comment for iteratable object?(是否为可迭代对象添加正确的phpdoc注释?)
                            本文介绍了是否为可迭代对象添加正确的phpdoc注释?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
                        
                        问题描述
我在尝试为下面的代码示例获取正确的自动完成时遇到了一些问题。我正在Win7计算机上使用PHPStorm 7。
首先只有一个简单的类。
/**
 * Class myObject
 */
class myObject
{
    /**
     * some method
     */
    public function myMethod()
    {
        // do something
    }
}
这是集合类,它可以包含前一个类的多个实例,并实现IteratorAggregate接口。
/**
 * 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
}
那么,您对如何解决这个问题有什么想法或基础知识吗?
推荐答案
/**
 * @return ArrayIterator|myObject[]
 */
public function getIterator()
{
    return new ArrayIterator($this->_objects);
}
对于扩展类(基类在上面):
/**
 * @method myObject[] getIterator()
 */
class ExtendedClass extends BaseCollection
{
}
或
/**
 * @method iterable<myObject> getIterator()
 */
class ExtendedClass extends BaseCollection
{
}
我认为这将是处理这种情况的最佳方式。至少它可以与PHPStorm一起使用
这篇关于是否为可迭代对象添加正确的phpdoc注释?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
				 沃梦达教程
				
			本文标题为:是否为可迭代对象添加正确的phpdoc注释?
				
        
 
            
        基础教程推荐
             猜你喜欢
        
	     - Web 服务器如何处理请求? 2021-01-01
 - 如何在数学上评估像“2-1"这样的字符串?产生“1"? 2022-01-01
 - php中的PDF导出 2022-01-01
 - PHPUnit 的 Selenium 2 文档到底在哪里? 2022-01-01
 - 主题化 Drupal 7 的 Ubercart “/cart"页 2021-01-01
 - php中的foreach复选框POST 2021-01-01
 - Yii2 - 在运行时设置邮件传输参数 2022-01-01
 - 将变量从树枝传递给 js 2022-01-01
 - 使用 scandir() 在目录中查找文件夹 (PHP) 2022-01-01
 - php 7.4 在写入变量中的 Twig 问题 2022-01-01
 
    	
    	
    	
    	
    	
    	
    	
    	
				
				
				
				