Ioc (Inversion of Control) 控制反轉模式 又稱 (Depe-ndency Injection)依賴注入模式
控制反轉是將元件的依賴關係從程式內部提到程式外部來管理,而依賴注入是指元件的依賴通過外部以引數或其它形式注入
下面我將以一個簡單的例子來演示什麼是 Ioc 控制反轉
<?php
interface Visit
{
public function go();
}
class Leg implements Visit //行走介面
{
public function go()
{
// TODO: Implement go() method.
echo "walt to Tibet!!!";
}
}
class Car implements Visit //汽車介面
{
public function go()
{
// TODO: Implement go() method.
echo "drive car to Tibet!!!";
}
}
class Train implements Visit //火車介面
{
public function go()
{
// TODO: Implement go() method.
echo "go to Tibet by train";
}
}
class Traveller // 旅行者類
{
protected $trafficTool;
public function __construct(Visit $trafficTool)
{
$this->trafficTool = $trafficTool;
}
public function visitTibet()
{
$this->trafficTool->go();
}
}
$tra = new Traveller(new Car());
$tra->visitTibet();
Traveller
類的建構函式依賴了一個外部的具有visit介面的例項,而例項化Traveller
時,我們傳遞了一個 $trafficTool
例項, 即通過依賴注入的方法解決依賴