introduction-to-inversion-of-control
Last updated
Last updated
class iPhone
{
// 电量
private $power;
// 充电
public function charge()
{
}
}class AppleCharger
{
public function charge()
{
return 100;
}
}class iPhone
{
// 电量
private $power;
// 充电,只能用原装的充电器
public function charge()
{
$charger = new AppleCharger;
$this->power = $charger->charge();
}
}// 充电
$iphone = new iPhone;
$iphone->charge();class iPhone
{
private $power;
private $charger;
// 依赖注入充电器,╮(╯▽╰)╭哎算了只要是充电器就行
public function __construct(Charger $charger)
{
$this->charger = $charger;
}
// 充电
public function charge()
{
$this->power = $this->charger->charge();
}
}interface Charger
{
public function charge();
}// Laravel 容器
use Illuminate\Container\Container;
$container = Container::getInstance();
// 给它一个原装充电器:
$container->bind(Charger::class, AppleCharger::class);
// 或者给它其它充电器
$container->bind(Charger::class, OtherCharger::class);
// 充电
$iphone = $container->make(iPhone::class);
$iphone->charger();