我是 PHP 和 Magento 的新手,我试图弄清楚以下两行之间的区别:
$helper = Mage::helper('catalog/category');
$helper = $this->helper('catalog/category');
我在模板文件中看到过类似的代码,但我何时以及为什么要使用其中一个而不是另一个?
第一行$helper = Mage::helper('catalog/category');
是将对象分配给助手。
第二行$helper = $this->helper('catalog/categry');
是将对象的属性分配给变量 - 但只能在对象内使用,因为它使用$this->
语法。
在对象内部通过$this->
while 外部引用它的属性,通过变量名引用它,然后通过 property 引用它$someVar->
。
需要注意的另一件事是,您的第一个语句(正如 Eric 正确指出的那样)是第一个语句可以是对静态方法的调用(这是在不创建对象实例的情况下运行对象函数的好方法 -这通常不起作用)。
通常你必须先创建一个对象才能使用它:
class something
{
public $someProperty="Castle";
public static $my_static = 'foo';
}
echo $this->someProperty; // Error. Non-object. Using '$this->' outside of scope.
echo something::$someProperty; // Error. Non Static.
echo something::$my_static; // Works! Because the property is define as static.
$someVar = new something();
echo $someVar->someProperty; // Output: Castle