【问题标题】:How am I able to dependency inject? PHP我如何能够依赖注入? PHP
【发布时间】:2015-09-20 18:19:17
【问题描述】:

我正在尝试学习依赖注入以使事情变得更容易,但是我很困惑,不知道从哪里开始。

基本上我有 3 个类:核心、引擎和帐户类。

帐户类需要能够访问引擎方法,引擎类需要能够访问核心方法。此外,核心必须能够访问另一个类“设置”。

我有一个索引文件,其中包含所有类以及设置并启动它们,我使用 __get 访问我的设置类,因为变量是私有的。但是我收到诸如“传递给 Core::__construct() 的参数 1 必须是设置的实例,没有给出”之类的错误。

这是我所拥有的:

class core {
    protected $test;

    public function __construct(Settings $test){
        $this->test = $test;
    }
}

【问题讨论】:

    标签: php oop dependency-injection


    【解决方案1】:

    这是类型提示,与Dependency Injection无关。

    您已指定__contruct() 函数的参数必须是Settings 类型。显然,您作为 $test 参数传递的任何内容都不是 Settings 对象。

    所以你应该这样打电话

    $xxx = new Settings();
    $yyy = new core($xxx);
    

    现在core 构造函数方法的参数是Settings 类型

    你说你的 index.php 看起来像这样:-

    $settings = new settings(); 
    $core = new core($settings); 
    

    在这种情况下,您的设置类称为Class settings,并且您的原型也应该有一个小写的s,例如

    class core {
        protected $test;
    
        public function __construct(settings $test){
            $this->test = $test;
        }
    }
    

    【讨论】:

    • 我不确定第三句话是什么意思,“设置”是我试图注入当前类“核心”的另一个类,“$test”是我的变量使用。 $xxx = 新设置(); $yyy = 新核心($xxx);我也试过这个
    • 不,我已经有了,但我不确定从那里去哪里,我的索引是这样的: $settings = new settings(); $core = new core($settings);
    • 你用的是什么版本的PHP
    • 5.6.0,如何从 Settings 类调用 __get 方法,以便核心可以访问它们?
    • 查看我的答案的其他部分
    猜你喜欢
    • 1970-01-01
    • 2012-04-25
    • 2017-02-13
    • 1970-01-01
    • 2012-11-17
    • 2010-11-27
    • 2014-09-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多