【发布时间】:2010-12-07 05:32:58
【问题描述】:
我在 Magento 中发现了很多代码 sn-ps 比如
$variable_name = Mage::app()->function_name();
这是一个例子
$websites = Mage::app()->getWebsites(true, true);
这个函数调用(调用?)做什么?语法不熟悉,我需要一些基本解释,以便更好地跟踪代码。
【问题讨论】:
我在 Magento 中发现了很多代码 sn-ps 比如
$variable_name = Mage::app()->function_name();
这是一个例子
$websites = Mage::app()->getWebsites(true, true);
这个函数调用(调用?)做什么?语法不熟悉,我需要一些基本解释,以便更好地跟踪代码。
【问题讨论】:
这实际上是两个独立的方法调用。
$result = Mage::app()->getWebsites();
第一个是
$o = Mage::app();
这是在“class Mage”上调用static method app,可以在
app/Mage.php
:: 运算符调用静态类方法。如果你不明白那是什么意思,就想“左边的类,右边的方法,你不能在方法中使用 $this 变量”。
所以,这个方法调用返回一个对象,几乎可以肯定是Mage_Core_Model_App,它位于
app/code/core/Mage/Core/Model/App.php
所以上面的一行可以改写为
$o = Mage::app();
$result = $o->getWebsites();
希望这有助于揭开神秘面纱。
【讨论】:
为自己准备一个好的 IDE,例如 Eclipse with PDT。它的代码完成工具是天赐之物。
例如,当您键入 MA 时,它会自动将其补全为 Mage:: 并提供静态函数列表,包括 app()。之后键入 ->GETW 它会显示另一个函数列表,getWebsites() 将在您键入时被选中,当突出显示时将解释所需的参数以及解释其作用的概述(从 PHPDoc 收集)。
如果你有这样的工具,你永远不会问“这个函数调用实际上是做什么的??”在网站上。
【讨论】:
您可能会看到 zend 框架中的“神奇的 getter 和 setter”。我知道这让我有点困惑。在 zend 框架中,您可以调用获取和集合,而无需在任何地方定义实际函数,如果没有函数定义,那么它只会将您分配给调用集合的对象附加任何内容。
【讨论】:
您正在设置一个变量以包含函数返回的任何内容。要查看此方法究竟返回什么,您必须转储该值或检查该方法。从外观上看,它会将值设置为包含网站对象,以后可以通过此变量进行迭代或访问
【讨论】: