2

私はPHPとMagentoを初めて使用し、次の2行の違いを理解しようとしています。

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

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

テンプレートファイルで同様のコードを見たことがありますが、いつ、なぜ一方を他方の代わりに使用するのでしょうか?

4

1 に答える 1

5

最初の行$helper = Mage::helper('catalog/category');は、ヘルパーにオブジェクトを割り当てることです。

2行目$helper = $this->helper('catalog/categry');は、オブジェクトのプロパティを変数に割り当てていますが、構文を使用しているため、オブジェクト内でのみ使用でき$this->ます。

オブジェクトの内部では、$this->外部でそのプロパティを参照し、変数名、次にプロパティで参照します$someVar->

もう1つ注意すべき点は、最初のステートメントは(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 に答える