注册模式(Registry Pattern)是一种设计模式,用于全局共享和存储对象。在注册模式中,一个中心的对象(通常称为注册表或注册器)负责存储和提供对其他对象的全局访问。这样的设计可以方便地在应用程序中共享和访问对象,而无需直接在类之间传递对象引用。

以下是一个简单的 PHP 注册模式的示例:
<?php

class Registry {
    private static $objects = [];

    // 注册对象
    public static function set($key, $object) {
        self::$objects[$key] = $object;
    }

    // 获取对象
    public static function get($key) {
        return isset(self::$objects[$key]) ? self::$objects[$key] : null;
    }

    // 删除对象
    public static function remove($key) {
        if (isset(self::$objects[$key])) {
            unset(self::$objects[$key]);
        }
    }
}

// 示例类
class Database {
    private $name;

    public function __construct($name) {
        $this->name = $name;
    }

    public function getName() {
        return $this->name;
    }
}

// 在注册表中注册一个数据库对象
Registry::set('db', new Database('MySQL'));

// 在其他地方获取注册表中的对象
$db = Registry::get('db');

if ($db instanceof Database) {
    echo "Database Name: " . $db->getName() . "\n";
} else {
    echo "Database not found in the registry.\n";
}

在这个例子中,Registry 类是注册表,负责存储和提供对其他对象的访问。通过 set 方法注册对象,通过 get 方法获取对象。Database 类是一个示例类,表示数据库对象。通过注册表,可以在不直接传递对象引用的情况下,全局共享和访问这个数据库对象。

需要注意的是,注册模式可能会引入全局状态,因此在使用时需要小心,确保合理使用并避免滥用。


转载请注明出处:http://www.pingtaimeng.com/article/detail/11950/PHP