在Mage类中使用$_registry
存储生成的对象,这样生成的对象在全局都可以访问。Mage::register函数有两种格式: public static function register($key, $value, $graceful = false)
注册一个新的变量 public static function registry($key)
通过$key获取已有变量 public static function unregister($key)
注销一个变量 Magento源文件:
/**
* Register a new variable
* @param string $key
* @param mixed $value
* @param bool $graceful
* @throws Mage_Core_Exception
*/
public static function register($key, $value, $graceful = false)
{
if (isset(self::$_registry[$key])) {
if ($graceful) {
return;
}
self::throwException('Mage registry key "'.$key.'" already exists');
}
self::$_registry[$key] = $value;
}
/**
* Retrieve a value from registry by a key
* @param string $key
* @return mixed
*/
public static function registry($key)
{
if (isset(self::$_registry[$key])) {
return self::$_registry[$key];
}
return null;
}
/**
* Unregister a variable from register by key
* @param string $key
*/
public static function unregister($key)
{
if (isset(self::$_registry[$key])) {
if (is_object(self::$_registry[$key]) && (method_exists(self::$_registry[$key], '__destruct'))) {
self::$_registry[$key]->__destruct();
}
unset(self::$_registry[$key]);
}
}