Mage::getSingleton 函数详解
getSingleton 最终也是返回一个Mage_Core_Model_Abstract子类对象,但其和getModel函数最大的区别是 永远只生成一个对象
并将生成的对象通过Mage::registry函数注册到magento系统当中,再次执行getSingleton时获取到上一 次生成的对象。
我们通过以下的系统源代码可以清楚的看到其和getModel函数的区别。
- /**
- * Retrieve model object singleton
- *
- * @param string $modelClass
- * @param array $arguments
- * @return Mage_Core_Model_Abstract
- */
- public static function getSingleton($modelClass='', array $arguments=array())
- {
- $registryKey = '_singleton/'.$modelClass;
- if (!self::registry($registryKey)) {
- self::register($registryKey, self::getModel($modelClass, $arguments));
- }
- return self::registry($registryKey);
- }