PHP之注册树模式
2016-03-11 23:31
751 查看
PHP注册树模式主要用于创建对象的时候将我们的对象与相应的变量进行绑定,其实就相当于我们平常说的IOC,DI,例如我们的YII2框架的IOC就是使用了注册树模式进行对象管理的,最大好处就是将我们创建对象的步骤交给容器去管理,降低我们依赖关系模块的耦合度,方便代码的管理,结构更加清晰。
准备代码片段,结构如下:
Object.php文件:
autoload.php文件:
index.php文件:
准备代码片段,结构如下:
Object.php文件:
<?php /** * Created by PhpStorm. * User: Administrator * Date: 2016/3/10 * Time: 11:57 */ namespace Factory; class Object { private static $instance; /** * 单例模式 */ private function __construct(){ } public static function getInstance(){ if(self::$instance){ return self::$instance; } self::$instance = new self(); return self::$instance; } public function say(){ echo __METHOD__; } }ObjectFactory.php文件:
<?php /** * Created by PhpStorm. * User: Administrator * Date: 2016/3/10 * Time: 11:56 */ namespace Factory; class ObjectFactory { /** * 工厂模式 */ public static function createObject(){ $obj = Object::getInstance(); \Register\Container::set('object',$obj); } }Container.php文件:
<?php /** * Created by PhpStorm. * User: Administrator * Date: 2016/3/11 * Time: 15:10 */ namespace Register; class Container { //存放对象的数组 protected static $objects; /** * 存放一个对象 * @param $alias * * @param $object */ public static function set($alias,$object){ self::$objects[$alias] = $object; } /** * 获取一个对象 * @param $alias * @return mixed */ public static function get($alias){ return self::$objects[$alias]; } /** * 销毁一个对象 * @param $alias */ public static function _unset($alias){ unset(self::$objects[$alias]); } }
autoload.php文件:
<?php /** * Created by PhpStorm. * User: Administrator * Date: 2016/3/10 * Time: 12:13 */ spl_autoload_register('autoload'); function autoload($className){ $classFile = ROOT.'/'.str_replace('\\','/',$className).'.php'; include $classFile; }
index.php文件:
<?php /** * Created by PhpStorm. * User: Administrator * Date: 2016/3/10 * Time: 11:55 */ define('ROOT',__DIR__); require 'autoload.php'; Factory\ObjectFactory::createObject(); $obj = Register\Container::get('object'); $obj->say();使用注册树模式,我们创建对象的时候,将这件事情交给我们的容器去做,使得我们有依赖关系的模块耦合度降低,整个系统代码的耦合性大大降低,项目维护更加方便,项目的结构也更加清晰。
相关文章推荐
- PHP工厂模式和单例模式
- win8 wampserver2.5 php_mongo.dll安装
- yii2 win下 安装kartik拓展时出错
- Yii createCommand CURD操作+个人总结
- (13) PHP 随笔---Smarty模板引擎 缓存的高级应用 22
- (12) PHP 随笔---Smarty模板引擎 单模板多缓存、局部不缓存 20--21
- (11) PHP 随笔---Smarty模板引擎 变量调节器、缓存处理 17--19
- (10) PHP 随笔---Smarty模板引擎 布局/继承使用
- DOM offsetParent
- yii2构造方法
- PHP函数 ------ ctype_alnum
- ThinkPHP3.2.3建立项目模板和模板赋值
- PHP 对于 MYSQL 基础操作
- java 时间戳和PHP时间戳的转换
- FileOutputStream filenotfound的错误
- poj2505-A multplication game
- html表单结合php实现上传文件功能并且监控文件上传的进度
- 单例模式与静态变量在PHP中 (转载)
- PHP学习笔记(1)
- ucenter 简单分析与同步机制