Php 抽象构造函数的依赖注入
案例1:Php 抽象构造函数的依赖注入,php,laravel,dependency-injection,abstract-class,abstract,Php,Laravel,Dependency Injection,Abstract Class,Abstract,案例1: class Test { function test() { return 'test'; } } abstract class MasterAbstract { public function __construct (Test $test) { $this->test = test; } protected function runMaster() { return $th
class Test {
function test()
{
return 'test';
}
}
abstract class MasterAbstract {
public function __construct (Test $test)
{
$this->test = test;
}
protected function runMaster()
{
return $this->test->test();
}
}
class Child extends MasterAbstract
{
public function run()
{
return 1212;
}
}
这里有错误
传递给MasterAbstract::_construct()的参数1必须是实例
未给出测试结果
案例2:在本例中,我没有为子控制器或其他控制器创建任何对象。它起作用了。我使用的是laravel框架
$c = new Child();
echo $c->run;
请任何人解释一下这两个案例是如何运作的 在案例#2中,您使用构造函数的参数注入子对象类,该参数由
在案例#1中,您使用new
station创建Child
对象,并且需要在参数中提供一个Test
类
如果您想这样做,请调用app container make方法:
class SomeotherController
{
private $ch;
public function __constructor(Child $ch)
{
$this->ch = $ch;
}
public function run()
{
return $this->ch->run();
}
}
app(Child::class)
与\app::make(Child::class)
相同。它为您提供新对象的实例,并自动解析依赖项。谢谢@Filip Koblański
$c = app(Child::class);
echo $c->run;