2

我是 PHP 和 Magento 的新手,我试图弄清楚以下两行之间的区别:

$helper = Mage::helper('catalog/category');

$helper = $this->helper('catalog/category');

我在模板文件中看到过类似的代码,但我何时以及为什么要使用其中一个而不是另一个?

4

1 回答 1

5

第一行$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
于 2012-08-16T07:45:47.290 回答