Magento getModel getSingleton等常用函数说明
来源:互联网 发布:动态影集制作软件 编辑:程序博客网 时间:2024/05/19 12:39
Mage::getModel函数详解:
在通常的PHP初始化类对象的时候,使用以下方式进行生成。
$modelSales = new ModelSales();
但是在magento中初始化模型对象时候,使用以下的方式进行生成模型对象。
$product = Mage::getModel(’catalog/product’);
我们阅读magneto系统核心代码,发现在执行Mage::getModel(‘catalog/product’)函数时候完成了以下几个步骤:
-
在系统配置中寻找节点。 -
在节点中间寻找节点。 -
在节点中寻找节点。
在class节点所包含的内容(假设定义为Mage_Catalog_Model)和data拼接成最终的类名称,经过magento类规范变成Mage_Catalog_Model_Product。
然后在Mage/Catalog/Model/Product.php文件中读取类定义并生成对象。
每一次执行的时候,都会重新生成一个模型对象。
最终返回一个Mage_Core_Model_Abstract子类对象。
public static function getModel($modelClass = '', $arguments = array()){return self::getConfig()->getModelInstance($modelClass, $arguments);}
Mage::getSingleton函数详解:
getSingleton最终也是返回一个Mage_Core_Model_Abstract子类对象,但是其和getModel函数最大的区别是永远只生成一个对象,并将生成的对象通过Mage::registry函数注册到magento系统当中,再次执行getSingleton时获取到上一次生成的对象。
我们通过以下的系统源代码可以清楚的看到其和getModel函数的区别。
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);}
Mage::helper函数详解:
在通常的PHP初始化类对象的时候,使用以下方式进行生成。
$helper_sales = new HelperSales();
但是在magento中初始化类对象时候,使用以下的方式进行生成对象。
$helper_sales = Mage::helper(‘sales/data’);
我们阅读magneto系统核心代码,发现在执行Mage::helper(‘sales/data’)函数时候完成了以下几个步骤:
-
在系统配置中寻找节点。 -
在节点中间寻找节点。 -
在节点中寻找节点。
在class节点所包含的内容(假设定义为Mage_Sales_Helper)和data拼接成最终的类名称,经过magento类规范变成Mage_Sales_Helper_Data。
然后在Mage/Sales/Helper/Data.php文件中读取类定义并生成对象。
public static function helper($name){if (strpos($name, '/') === false) {$name .= '/data';}$registryKey = '_helper/' . $name;if (!self::registry($registryKey)) {$helperClass = self::getConfig()->getHelperClassName($name);self::register($registryKey, new $helperClass);}return self::registry($registryKey);}
Mage::register函数详解:
在Mage类中使用$_registry存储生成的对象,这样生成的对象在全局都可以访问。Mage::register函数有两种格式:
-
public static function register($key, $value,$graceful = false) 注册一个新的变量 -
public static function registry($key)通过$key获取已有变量 -
public static function unregister($key)注销一个变量
Magento源文件:
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;}public static function registry($key){if (isset(self::$_registry[$key])) {return self::$_registry[$key];}return null;}
Mage::getBaseUrl以及其他路径获取函数详解:
获取当前店铺的路径。默认参数是Mage_Core_Model_Store::URL_TYPE_LINK,返回http://example.com/index.php/。
还可以使用以下几个参数:
Mage_Core_Model_Store::URL_TYPE_LINK link http://example.com/index.php/Mage_Core_Model_Store::URL_TYPE_DIRECT_LINK direct_link http://example.com/index.php/Mage_Core_Model_Store::URL_TYPE_WEB web http://example.com/Mage_Core_Model_Store::URL_TYPE_SKIN skin http://example.com/skin/Mage_Core_Model_Store::URL_TYPE_JS js http://example.com/js/Mage_Core_Model_Store::URL_TYPE_MEDIA media http://example.com/media/
当然,也可以使用简短的代码来获取js。Mage::getBaseUrl(‘js’);
public static function getBaseUrl($type = Mage_Core_Model_Store::URL_TYPE_LINK, $secure = null){return self::app()->getStore()->getBaseUrl($type, $secure);}
Mage_Core_Helper_Url类调用路径
1.获取当前路径Mage::help(‘core/url’)->getCurrentUrl();
public function getCurrentUrl(){return $this->_getUrl('*public function getHomeUrl(){return Mage::getBaseUrl();}
在Block和Phtml文件中,可以使用getUrl函数直接调用路径,一般使用在Block文件中。该函数定义在app/code/core/Mage/Core/Block/Abstract.php文件中。
如$this->getUrl(‘customer/account/login’);表示用户登录页面。
public function getUrl($route='', $params=array()){return $this->_getUrlModel()->getUrl($route, $params);//该函数调用Mage::help('core/url')->getUrl($route, $params);来进行处理,效果一样。}
如果调用skin中某个文件,可以直接使用getSkinUrl函数,一般用在Phtml文件中。如$this->getSkinUrl(‘images/calendar.gif’);表示获取指定模板中的images/calendar.gif文件。
public function getSkinUrl($file=null, array $params=array()){return Mage::getDesign()->getSkinUrl($file, $params);}
getData函数:
可以直接获取对象中的某个值,如获取产品的sku值,可以使用$product->getData(‘sku’);,也可以使用$product->getSku();
在没有参数的情况下,getData函数会返回一个数组,你可以print_r($Product->getData());讲所有数据打印出来。也可以使用$arrProduct = $Product->getData(); echo$arrProduct->sku;
总结:
本人觉得这篇文章不错,我看了之后,让我更深入了解Magneto。其实Magento很深奥的,只是一直没有找到好一点切入点,今天看到这篇文章,对一些常的方法进行说明。让自己明白如何应用里面的方法,日后对Magento二次发也就不会那么纠结了。
学习同时,也要分享,所以我就把它分享出来,下面是该文章的来源地址。
来源:http://blog.csdn.net/huashenghn/article/details/7473547
- Magento getModel getSingleton等常用函数说明
- Magento getModel getSingleton等常用函数说明
- Magento getModel getSingleton等常用函数说明
- Magento getModel getSingleton等常用函数说明
- Magento getModel getSingleton等常用函数详解
- Magento中Mage::getSingleton函数
- Magento中Mage::getModel 函数
- magento开发常用函数
- magento 常用函数
- magento常用函数列表
- Getting things in Magento by getModel and getData methods
- Magento中getModel与getData方法结合使用获取信息
- ASP 常用函数说明
- ASP常用函数说明
- OCI常用函数说明
- c 常用函数说明
- Datastage常用函数说明
- ORALCE常用函数说明
- 使用AFNetworking框架进行post 请求解析返回得数据
- CodeMyLife 开博
- eclipse查询字符串(ctrl+h)
- PPT快捷键大全(作分析报告的人有福了)
- too few arguments to block call expected 3 have 1
- Magento getModel getSingleton等常用函数说明
- win8下cocos2dx-3.2+VS2012环境配置及项目创建
- 超分辨率资源
- constructor
- jbpm总结
- 人生133个规则,能领悟多少算多少!!!看自己的造化!!!
- VMware中Bridged、NAT、host-only三种网络连接模式的原理及其区别
- 《软件工程》——编码
- 初学 Java Web 开发,从 Servlet 开始