依赖注入和facade模式的简单实用方法

Original 2019-05-25 16:31:10 256
abstract:<?php //数据库类 class Db {     public function connect()     {         echo '数据库连接成功<br>&#
<?php
//数据库类
class Db
{
    public function connect()
    {
        echo '数据库连接成功<br>';
    }
}
//主页
class Display
{
    public function view()
    {
        echo '登陆成功,进入主页<br>';
    }
}

//容器
class Container
{
    protected $arr=[];
    public function bind($index,Closure $item)
    {
        //将new出来的对象放在数组中
        $this->arr[$index]=$item;
    }
    public function make($index)
    {
        //调用函数
        return call_user_func_array($this->arr[$index],[]);
    }
}
$container=new Container();
$container->bind('db',function (){
    return new Db();
});
$container->bind('view',function (){
    return new Display();
});

class login
{
    public static $container=null;
    public static function init(Container $container)
    {
        static::$container=$container;
    }
    public static function connect()
    {
        static::$container->make('db')->connect();
    }
    public static function view()
    {
        static::$container->make('view')->view();
    }
}
//初始化
login::init($container);
login::connect();
login::view();


Correcting teacher:天蓬老师Correction time:2019-05-25 17:28:43
Teacher's summary:现代php中框架中, 几乎都不约而同的使用了Facade模式, 也叫外观模式, 可以使类中的方法对外提供统一的调用接口

Release Notes

Popular Entries