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注释?


猜你喜欢
- PHP foreach() 与数组中的数组? 2022-01-01
- openssl_digest vs hash vs hash_hmac?盐与盐的区别HMAC? 2022-01-01
- Oracle 即时客户端 DYLD_LIBRARY_PATH 错误 2022-01-01
- Laravel 5:Model.php 中的 MassAssignmentException 2021-01-01
- 覆盖 Magento 社区模块控制器的问题 2022-01-01
- 如何从数据库中获取数据以在 laravel 中查看页面? 2022-01-01
- 如何使用 Google API 在团队云端硬盘中创建文件夹? 2022-01-01
- PHP - if 语句中的倒序 2021-01-01
- 如何在 Symfony2 中正确使用 webSockets 2021-01-01
- 使用 GD 和 libjpeg 支持编译 PHP 2022-01-01