我已经使用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()
这是基本的实现,我不明白它为什么不注入。
提前谢谢。
答案 0 :(得分:2)
当您创建B(在B中注入A)时,PHP-DI无法神奇地拦截。你必须使用PHP-DI创建B:
$b = $container->get('ClassB');
$b->methodB();