2016-04-26 298 views
1
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; 
    } 
} 

案例1:依赖注入

$c = new Child(); 
echo $c->run; 

收到错误在这里传递给MasterAbstract :: __结构(

参数1)必须是实例测试 ,没有给出

案例2:在这我没有创造任何对象ld或其他控制器。它正在工作。我正在使用laravel框架

class SomeotherController 
{ 
    private $ch; 

    public function __constructor(Child $ch) 
    { 
     $this->ch = $ch; 
    } 

    public function run() 
    { 
     return $this->ch->run(); 
    } 
} 

请任何人解释这两种情况如何工作?

回答

2

事例#2你注入与构造函数的参数Child对象类是由Laravel's IoC

解决在情况#1您创建new statment Child对象,你需要给一个Test类的参数。

如果你想这样下去你CAL调用应用程序容器化妆方法:

$c = app(Child::class); 
echo $c->run; 

app(Child::class)相同\App::make(Child::class)。它为您提供新对象的实例并自动解决依赖关系。

+0

谢谢@菲利普Koblański – vijaykumar

+0

如果这有帮助 - 你可以标记和接受答案:) –