【问题标题】:PHP-DI annotation not workingPHP-DI 注释不起作用
【发布时间】:2015-08-17 10:40:43
【问题描述】:

我已经使用 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();

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

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

提前谢谢你。

【问题讨论】:

    标签: annotations inject php-di


    【解决方案1】:

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

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

    【讨论】:

    • 我明白了,我认为它在运行时会这样做。谢谢,您的回答有效。
    猜你喜欢
    • 2018-09-11
    • 2014-08-14
    • 1970-01-01
    • 2013-09-20
    • 2020-10-09
    • 2012-09-19
    • 2015-09-14
    • 2017-08-20
    • 1970-01-01
    相关资源
    最近更新 更多