想必很多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;
}