0

Please consider the following code. I have no idea how the yield keyword works. Can anybody describe why the $this produce an error with 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);
            }
        }
    }
}

The yield $this->_Container->get($name); shows parse error. which is "Parse error: syntax error, unexpected '$this' (T_VARIABLE) in /home/test.xyz/modules/embedder/vendor/Essence/Provider/Collection.php on line 71"

It will also help if you can describe how I can write different way of the line yield $this->_Container->get($name);.

Thanks in Advance.

Shah Alom
  • 1,031
  • 1
  • 14
  • 26

0 Answers0