3

我已经使用 composer 在一个新的自定义项目中安装了 php-di 4.4。我正在使用 php 5.6.3 运行 xampp localhost,但我在这个项目上为 php 5.4 设置了 netbeans。我是 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();

这是我得到的错误: Call to a member function methodA() on null in D:\Projects\profi\test.php 第 27 行

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

先感谢您。

4

1 回答 1

2

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

$b = $container->get('ClassB');
$b->methodB();
于 2015-06-03T12:32:49.950 回答