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子类对象。

/**
* Retrieve model object
*
* @link    Mage_Core_Model_Config::getModelInstance
* @param   string $modelClass
* @param   array $arguments
* @return  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函数的区别。

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

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文件中读取类定义并生成对象。

/**
* Deprecated, use self::helper()
*
* @param string $type
* @return object
*/
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;
}
/**
* 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;
}

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’);

/**
* Get base URL path by type
*
* @param string $type
* @return string
*/
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类调用路径

函数位于app/code/core/Mage/Core/Model/Url.php当中。
1.获取当前路径Mage::help(‘core/url’)->getCurrentUrl();

/**
* Retrieve current url
*
* @return string
*/
public function getCurrentUrl()
{
return $this->_getUrl('*/*/*', array('_current' => true, '_use_rewrite' => true));

2.获取主页路径 Mage::help(‘core/url’)->getHomeUrl();

/**
* Retrieve homepage url
*
* @return string
*/
public function getHomeUrl()
{
return Mage::getBaseUrl();
}

在Block和Phtml文件中,可以使用getUrl函数直接调用路径,一般使用在Block文件中。该函数定义在app/code/core/Mage/Core/Block/Abstract.php文件中。
如$this->getUrl(‘customer/account/login’);表示用户登录页面。

/**
* Generate url by route and parameters
*
* @param   string $route
* @param   array $params
* @return  string
*/
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文件。

/**
* Retrieve url of skins file
*
* @param   string $file path to file in skin
* @param   array $params
* @return  string
*/
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;

来源:http://www.ahuasheng.com/magento-getmodel-getsingleton-function.html

Magento getModel getSingleton等常用函数说明相关推荐

  1. Magento模型集合addFieldToFilter常用过滤条件

    下载: 深入理解Magento.pdf 记录一下Magento模型集合Model Collection中addFieldToFilter()方法常用的过滤条件.以下参数也同样适用于产品实体的addAt ...

  2. php内置常用函数是哪些,PHP常用函数有哪些

    PHP常用函数有哪些 导语:PHP主要通过函数实现一些功能,那PHP常用函数有哪些呢?下面就由小编为大家介绍一下,欢迎大家阅读! 数学函数 1.abs(): 求绝对值 $abs = abs(-4.2) ...

  3. Lua基本语法-书写规范以及自带常用函数

    Lua基本语法-书写规范和常用函数 本文提供全流程,中文翻译. Chinar坚持将简单的生活方式,带给世人! (拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) 1 String O ...

  4. SQLserver 常用函数适用方法(转载)

    SQL Server 常用函数使用方法(持续更新) 之前就想要把一些 SQL 的常用函数记录下来,不过一直没有实行...嘿嘿... 直到今天用到substring()这个函数,C# 里面这个方法起始值 ...

  5. python Pool常用函数用法总结

    在本篇内容里小编给大家整理的是一篇关于python Pool常用函数用法总结内容,有需要的朋友们可以学习下. 1.说明 apply_async(func[,args[,kwds]):使用非堵塞调用fu ...

  6. ACM——常用函数总结

    常用函数总结: 一.全排列:next_permutation 二.读写优化 三.返回容器内最大最小值 四.复制函数 五.容器删除函数 六.容器填充函数 七.查找函数 八.字符串转换整数 九.欧拉筛 十 ...

  7. e class connect.php,剖析帝国CMS核心文件e/class/connect.php中的常用函数

    帝国CMS下的e/class/connect.php文件中包含了帝国CMS常用的一些核心功能函数,加深对connect.php文件中常用函数的了解对于帝国CMS的二次开发来说非常重要. 现将帝国CMS ...

  8. PHP访问mysql的常用函数,PHP操作MySQL数据库常用函数

    PHP操作MySQL数据库常用函数 php操作mysql数据库,俗称天龙八步: 第一步:连接数据库 第二步:判断连接错误 第三步:选择数据库 第四步:设置字符集 第五步:准备SQL语句 第六步:执行并 ...

  9. python math库常用函数_Python math库常用函数

    math库常用函数及举例: 注意:使用math库前,用import导入该库 >>> import math 取大于等于x的最小的整数值,如果x是一个整数,则返回x >>& ...

最新文章

  1. PHP文件上传和文件操作案例
  2. 关闭钩子(ShutdownHook)
  3. 云计算虚拟化技术会是企业安全黑洞?
  4. java技术教程视频_Spring开发视频教程高级篇+源码(400M)33讲
  5. 统计csv词频_分词词频统计
  6. 【转载】IDEA中Git的更新/提交/还原方法
  7. aspen plus大小_[软件]Aspen Plus 这些常识,你都懂了吗?
  8. 18.TCP使用的注意事项
  9. Python是编译运行的
  10. java环境配置指南
  11. VC2010 sp1修复补丁
  12. VNC远程桌面安装配置
  13. Oracle的Replace函数与translate函数详解与比较
  14. python编号/排序/翻转/并行迭代使用场景及作用
  15. Python免安装环境(Windows)
  16. Linux远程和文件传输工具Xshell、Xftp使用方法
  17. 【装机必备】Win软件卸载工具
  18. 树莓派控制继电器开关工作
  19. mac系统安装手机安装包
  20. Autodesk Autocad 3ds Max 2019 Crack 破解版

热门文章

  1. 最大跨度值(信息学奥赛一本通-T1063)
  2. A+B Problem(洛谷-P1001)
  3. 35 CO配置-控制-产品成本控制-成本对象控制-期末结算-定义在产品和废品的评估变式 (目标成本)
  4. python的os模块使用_Python学习笔记之os模块使用总结
  5. sparksql 保存点_Spark(十二)【SparkSql中数据读取和保存】
  6. python训练的模型怎么在C++使用?
  7. C/C++:各类型变量占用字节
  8. pycharm Debug调试
  9. torch.full 【输出大小为size内容为填充张量为fill_value的张量】
  10. android view过度动画,为View的切换添加过渡动画