加入收藏 | 设为首页 | 会员中心 | 我要投稿 汽车网 (https://www.0577qiche.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

关于PHP设计模式之:注册模式入门教程

发布时间:2023-09-16 14:40:33 所属栏目:PHP教程 来源:
导读:下面小编来为各位介绍一篇关于PHP设计模式之:注册模式入门教程,希望本文章能够帮助到各位朋友。

当你有一组全局对象被全局访问时可能就需要用到注册模式 (registry),它提供了在程序中有条理的存放并管理对象 (
下面小编来为各位介绍一篇关于PHP设计模式之:注册模式入门教程,希望本文章能够帮助到各位朋友。

当你有一组全局对象被全局访问时可能就需要用到注册模式 (registry),它提供了在程序中有条理的存放并管理对象 (object)一种解决方案。一个“注册模式”应该提供get() 和 set()方法来存储和取得对象。

注册模式通过单一的全局的对象来获取对其它对象的引用 实例:

<?php
/**
 * PHP设计模式之注册模式实例
 *
 
 */
class Registry {
    protected static $objects; //用于存放对象的数组
    /**
     * 将对象放到对象数组上
     * @param string $alias 别名
     * @param object $object 对象
     */
    static function set($alias, $object) {
        self::$objects[$alias] = $object;
    }
 
   /**
    * 将对象从数组上删除
    * @param string $alias 别名
    */
    static function _unset($alias) {
        unset(self::$objects[$alias]);
    }
    /**
     * 通过别名获取对象
     * @param string $alias 别名
     */
    static function get($alias) {
        if (array_key_exists($alias, self::$objects)) {
            return self::$objects[$alias];
        }
    }
}
class MyObject {
    public function test(){
        return 'ok';
    }
}
//结合工厂模式
class MyFactory {
    public static function factory(){
        //返回对象的实例
        $myObject =  new MyObject();
        Registry::set("myObject", $myObject);
    }
}
//调用工厂
MyFactory::factory();
//使用
echo Registry::get("myObject")->test();
Registry::_unset("myObject");
?>

(编辑:汽车网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章