理解laravel---1.3 控制反转3
Posted zhuxineli
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了理解laravel---1.3 控制反转3相关的知识,希望对你有一定的参考价值。
一段和标准略有不同的写法,有助于大家更好的理解Ioc容器的概念!
<?php
class A
protected $iocaaa;
public function __construct(Ioc $ioc)
$this->iocaaa = $ioc;
public function getB()
return $this->iocaaa->make('b')->abc();
class B
protected $c;
public function __construct(C $c)
$this->c = $c;
public function abc()
echo 'test';
class c
public function __construct()
class Ioc
protected $instances = [];
public function __construct()
public function getInstance($abstract)
$reflector = new ReflectionClass($abstract);
$constructor = $reflector->getConstructor();
$dependencies = $constructor->getParameters();
if(!$dependencies)
return new $abstract();
foreach ($dependencies as $dependency)
if(!is_null($dependency->getClass()))
$p[] = $this->make($dependency->getClass()->name);
return $reflector->newInstanceArgs($p);
public function make(string $abstract)
return $this->getInstance($abstract);
echo '<pre>';
$ioc = new Ioc();
$a = $ioc->make('A');
$b = $a->getB();
以上是关于理解laravel---1.3 控制反转3的主要内容,如果未能解决你的问题,请参考以下文章
Spring框架学习笔记 ---[spring框架概念 , 初步上手使用Spring , 控制反转 & 依赖注入初步理解 ]