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

2-形象理解SpringIOC(控制反转)

Spring框架学习笔记 ---[spring框架概念 , 初步上手使用Spring , 控制反转 & 依赖注入初步理解 ]

深层理解Spring 控制反转和依赖注入,这一篇文够了

控制反转(IOC)/依赖注入(DI)理解

Spring学习3—控制反转(IOC)Spring依赖注入(DI)和控制反转(IOC)

Spring4——IOC控制反转 (概念理解)