请考虑以下代码。我不知道yield
关键字的工作原理。谁能描述$this
为什么yield
产生错误的原因。
class Collection {
/**
* Dependency injection container.
*
* @var Container
*/
protected $_Container = null;
/**
* Constructor.
*
* @param Container $Container Dependency injection container
* used to build providers.
*/
public function __construct(Container $Container) {
$this->_Container = $Container;
}
// ...
/**
* Finds providers of the given url.
*
* @todo Use PHP generators to yield providers.
* @param string $url An url which may be extracted.
* @return array An array of Essence\Provider.
*/
public function providers($url) {
$filters = $this->_Container->get('filters');
foreach ($filters as $name => $filter) {
if ($this->_matches($filter, $url)) {
yield $this->_Container->get($name);
}
}
}
}
yield $this->_Container->get($name);
显示分析错误。
如果您能描述我如何编写yield $this->_Container->get($name);
行的另一种方式,也会有所帮助。
谢谢。