PHP-DI注释不起作用

时间:2015-06-03 09:42:38

标签: annotations inject php-di

我已经使用composer.Im在一个新的自定义项目中安装了php-di 4.4,运行xmpp localhost和php 5.6.3,但我在这个项目上设置了netbeans for php 5.4。我是php-di的新手,我确实在我的android项目中使用了注释,但似乎无法使它在这里工作。代码很简单,即时测试注入以查看它是如何工作的,这里是代码:

// composer autoload
require_once __DIR__ . '/vendor/autoload.php';

// injection entry point
$builder = new DI\ContainerBuilder();
$container = $builder->build();

class ClassA
{
    public function methodA()
    {
        echo 'methodA';
    }
}
class ClassB
{
    /**
     * @Inject
     * @var ClassA
     */
    public $param;

    public function methodB()
    {
        $this->param->methodA();
    }
}

$b = new ClassB();
$b->methodB();

这是我得到的错误: 在第27行的D:\ Projects \ profi \ test.php中调用null上的成员函数methodA()

这是基本的实现,我不明白它为什么不注入。

提前谢谢。

1 个答案:

答案 0 :(得分:2)

当您创建B(在B中注入A)时,PHP-DI无法神奇地拦截。你必须使用PHP-DI创建B:

$b = $container->get('ClassB');
$b->methodB();