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