摘要:我的理解: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()方法是做什么的?什么时候调用,这些应该注释出来,不要为了完成而完成,想一下,自己是否真的明白了,做一些变化,不要照搬老师的代码