Magento Registry (Mage::register)使用方法

想必很多PHP开发者都会想到使用session,cookie存储需要的数据,除此之外magento还提供registry存储所需的数据,非常方便和使用

1.一般情况下,是在controller控制器下使用Mage::register()存储之后需要用到的数据;

2.Registry也非常方便SEO优化,例如,Mage::registry(‘current_category’),Mage::registry(‘current_product’),获得当前分类、产品的对象,便可更加精准添加各个页面的meta相关信息,对于各大搜索引擎、社交媒体分享有诸多的帮助。

在Mage类中使用$_registry存储生成的对象,这样生成的对象在全局都可以访问。

Mage::register函数有两种格式: public static function register($key, $value, $graceful = false) 

注册一个新的变量 public static function registry($key) 通过$key获取已有变量 

public static function unregister($key) 注销一个变量 Magento源文件 .

D:\www\lollicupStore2\app\Mage.php 文件下面包含 register ,unregister 方法。

/**
* 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;
}

/**
* 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]);
}
}

/**
* 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;
}

Leave a comment

您的电子邮箱地址不会被公开。 必填项已用 * 标注