这是 IoC 吗?

参考 http://weibo.com/p/230418661838ca0102vbhb
http://laravelacademy.org/post/769.html
新手对 Ioc 的理解,不知对不对。

<?php
    class Ioc
    {
        public $arr=[];
        public function set($key,$course)
        {
            $this->arr[$key]=$course;
        }
        public function get($key,$class='')
        {
                return $this->arr[$key]($class);
        }
    }
    class Fac
    {
        public static $ins;
        public static function create($class){
           return self::$ins=$class;
        }
    }
    class Pro1
    {
        function test(){
            echo 'i am Pro1';
        }
        function demo(){
            echo '对象不会被覆盖';
        }
    }
    class Pro2
    {
        function test(){
            echo 'i am Pro2';
        }
    }
    $Fac=function ($class){
        return Fac::create($class);
    };
    $Pro1=function(){
        return new Pro1;
    };
    $Pro2=function(){
        return new Pro2;
    };
    $Ioc=new Ioc;
    $Ioc->set('Fac',$Fac);
    $Ioc->set('Pro1',$Pro1);
    $Ioc->set('Pro2',$Pro2);
    $Pr1=$Ioc->get('Fac',$Ioc->get('Pro1'));
    $Pr2=$Ioc->get('Fac',$Ioc->get('Pro2'));
    $Pr1->test();// i am Pro1
    $Pr2->test();// i am Pro2
    $Pr1->demo();//对象不会被覆盖
Make everything simple instead of making difficulties as simple as possible
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 3

不是

IoC 控制反转 = DI 依赖注入 + DL 依赖查找

这里没有依赖,体现不出来 。

这里只简易体现了 容器 工厂 这两个概念

容器 不仅仅存储对象,他的作用是共享

工厂 构建对象,具体的一个或一类对象

工厂一个配置,基于外部声明来实例化类 ,则可以说是实现了 IoC

6年前 评论
jcc123

@fantiq 大神弄个接口,这算依赖注入。像这样

interface interfacedemo{

}
class Fac
{
    public static $ins;
    public static function create(interfacedemo $class){
       return self::$ins=$class;
    }
}
class Pro1 implements interfacedemo
{
    function test(){
        echo 'i am Pro1';
    }
    function demo(){
        echo '对象不会被覆盖';
    }
}
class Pro2 implements interfacedemo
{
    function test(){
        echo 'i am Pro2';
    }
}

可依赖查询是要怎么定义的?

6年前 评论

@jc91715 可以先看下 laravel Controller里面的依赖注入实现,依赖注入就是 根据你的依赖声明帮你实例化

6年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!