facade理解

原创2018-11-29 14:32:0586
摘要:我的理解:1.通过把一个变量和实例化的函数,组成一个关联数组。2.然后通过一个函数:只要赋予变量一个值,就运行实例化函数,这样就可以通过赋值来实例化。3.实例化后的实例保存到容器(container)里面。以后就可以直接在容器取值,就不用再重新实例。//container<?php //链接数据后,返回 class Db {     publ

我的理解:

1.通过把一个变量和实例化的函数,组成一个关联数组。

2.然后通过一个函数:只要赋予变量一个值,就运行实例化函数,这样就可以通过赋值来实例化。

3.实例化后的实例保存到容器(container)里面。以后就可以直接在容器取值,就不用再重新实例。

//container

<?php
//链接数据后,返回
class Db
{
    public function connect()
    {
        return '数据库链接成功';
    }
}
class Validate
{
    public function check()
    {
        return '验证成功';
    }
}
class View
{
    public function display()
    {
        return '登录成功';
    }
}


class Container
{
    public $instance = [];

    public function bind($abstract, Closure $process)
    {
        $this->instance[$abstract] = $process;
    }
    public function make($abstract, $params=[])
    {
        return call_user_func_array($this->instance[$abstract],[]);
    }

}

$container = new Container();

$container->bind('db', function(){
    return new Db();
});

$container->bind('validate', function(){
    return new Validate();
});

$container->bind('view', function(){
    return new View();
});

//demo3

<?php
require 'container.php';
class Facade
{
    protected static $container = null;
    public static function initialize(Container $container)
    {
        static::$container = $container;
    }

    //数据库链接
    public static function connect()
    {
        return static::$container->make('db')->connect();
    }

    //数据验证
    public static function check()
    {
        return static::$container->make('validate')->check();
    }

    //输出信息
    public static function display()
    {
        return static::$container->make('view')->display();
    }
}

Facade::initialize($container);

echo Facade::connect().'<br>';
echo Facade::check().'<br>';
echo Facade::display().'<br>';


批改老师:天蓬老师批改时间:2018-11-29 14:43:07
老师总结:make()方法是做什么的?什么时候调用,这些应该注释出来,不要为了完成而完成,想一下,自己是否真的明白了,做一些变化,不要照搬老师的代码

发布手记

热门词条