一段和标准略有不同的写法,有助于大家更好的理解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