php中依赖注入的问题[关闭]
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php中依赖注入的问题[关闭]相关的知识,希望对你有一定的参考价值。
我在这里查看了问题,并尝试相应地修改代码,但我很难理解为什么这不起作用。
我的命名空间中有一个类,我想使用另一个类中的另一个类的方法。所以我尝试过:
<?php
namespace Main_NamespaceMy_Namespace;
use Other_NamespaceCool_Class;
class Main_Class {
protected $cool_class;
public function __construct( Cool_Class $cool_class ) {
$this->cool_class = $cool_class;
}
public test_method() {
$some_boolean = $this->cool_class->some_method_that_returns_bool();
}
}
我用new MainClass()
在其他地方实例化它。
这失败了,告诉我
PHP致命错误:未捕获的TypeError:传递给Main_Namespace的参数1 My_Namespace Main_Class :: __ construct()必须是Other_Namespace Cool_Class的实例,没有给定,在...中调用
我甚至尝试过
use Other_NamespaceCool_Class;
$cool_class_instance = new Cool_Class();
new Main_Class( $cool_class_instance );
不能正常工作(我想我找不到课程错误)。
现在,如果我没有在构造函数中实例化,而是在类似的方法内部
<?php
namespace Main_NamespaceMy_Namespace;
use Other_NamespaceCool_Class;
class Main_Class {
public test_method() {
$cool_class = new Cool_Class();
$some_boolean = $cool_class->some_method_that_returns_bool();
}
}
这会奏效。
我在这里错过了什么?我究竟做错了什么?
答案
对于第一个例子:
$myObject = new MainClass();
你得到的错误是预期的。对于具有带类型参数的构造函数的类,不能调用空构造函数。
对于第二个示例(调用具有初始化对象作为参数的构造函数,该函数失败):
编辑:添加原始问题中缺少的详细信息。
- 请指定您收到的确切错误消息 - 类加载错误
- 请指定PHP版本 - 7.1
- 请提供自定义自动加载器 - 评论链接。
I suggest to debug the autoloader by dumping the values it is processing.
例3没问题。
以上是关于php中依赖注入的问题[关闭]的主要内容,如果未能解决你的问题,请参考以下文章
spring练习,在Eclipse搭建的Spring开发环境中,使用set注入方式,实现对象的依赖关系,通过ClassPathXmlApplicationContext实体类获取Bean对象(代码片段