博主信息
博文 2
粉丝 0
评论 0
访问量 2835
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
tp5中的Facade技术理解
Php阿星的博客
原创
2058人浏览过
<?php 
//容器类
//数据库操作类
class Db
{
	//数据库连接
	public function connect()
	{
		return '数据库连接成功<br>';
	}
}

//数据验证类
class Validate
{
	//数据验证
	public function check()
	{
		return '数据验证成功<br>';
	}
}

//视图图
class View
{
	//内容输出
	public function display()
	{
		return '用户登录成功';
	}
}

/******************************************************************************/

//一.创建容器类
class Container
{
	//创建属性,用空数组初始化,该属性用来保存类与类的实例化方法
	public $instance = [];

	//初始化实例数组,将需要实例化的类,与实例化的闭包方法'Closure $process'进行绑定
	public function bind($abstract, Closure $process)
	{
		//键名为类名,值为实例化的方法
		$this->instance[$abstract] = $process;
	}

	//创建类实例,返回一个类的实例
	public function make($abstract, $params=[])
	{        //这里的$params 貌似后边没有用到 还不了解具体用法;
		return call_user_func_array($this->instance[$abstract],[]);
	}

}

/******************************************************************************/

//二、服务绑定: 将类实例注册到容器中
$container = new Container(); 

//将Db类绑定到容器中
$container->bind('db', function(){
	return new Db();
});

//将Validate类实例绑定到容器中
$container->bind('validate', function(){
	return new Validate();
});

//将View类实例绑定到容器中
$container->bind('view', function(){
	return new View();
});

//Facade类
<?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();
echo Facade::check();
echo Facade::display();


批改状态:未批改

老师批语:
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学