理解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的主要内容,如果未能解决你的问题,请参考以下文章