0

ここで何が起こっているのか少し混乱しています。メソッドが自分自身を呼び出しているように見えますか? Magento のモデルについて学習しようとしています。私はヘルパー (カタログ/カテゴリ) から戻ってきて、このメソッド "GetCategories" を呼び出しました。ここで何が起こっているのかわかりません。誰かがこのコード スニペットに光を当てることができれば、非常に感謝しています。

  getCategories ( $parent,
          $recursionLevel = 0,
          $sorted = false,
          $asCollection = false,
          $toLoad = true     
              ){
                  $categories = $this->getResource()
                   ->getCategories($parent, $recursionLevel, $sorted, $asCollection,  $toLoad);
                   return $categories;
                  } 
4

2 に答える 2

1

@hakraの回答に追加することはあまりありません。Magento 固有のロジックのほんの一部です。したがって、Magento モデルを操作するには、Magento には通常のモデルとリソース モデルの 2 種類のモデルがあることを知っておく必要があります (ビュー モデルとしてモデルに割り当てブロックを呼び出すこともできますが、それはVの部分により関連しています)。 MVC)。

リソースモデルは、DB 関連のロジックのみを含む DB アダプターとして作成され、多くの場合、何らかの DB テーブルに接続されているため、そのテーブルでの CRUD 操作のロジックが含まれています。このように定期的に見られます - シンプルさsomeMethodは通常のモデルの一部ですが、DB 関連のロジックが含まれているため、メソッドの実装はすべてリソースsomeMethodモデルに移動されたため、通常のモデルの本体はそのようなものになります:

public function someMethod($args)
{
    return $this->getResource()->someMethod($args);
}
于 2012-09-29T15:45:58.357 に答える
0

あなたが投稿したコードについて言うのは難しいです。両方のメソッドが同じ名前 ( ) を共有してgetCategoriesいても、それらが同じクラスまたはオブジェクトであることを意味するわけではありません。

知りたい場合は、比較する必要があります。

 var_dump($this === $this->getResource());

それとは別に、メソッドがそれ自体を呼び出す再帰のプログラミングでは一般的であるため、再帰です。ただし、そのコードのチャンクでは、壁に対して実行されます。

技術的に言えば、あなたの例では、これはまったく同じオブジェクトメソッドではないという仮定をします。

この回答は Magento とは無関係であることに注意してください。これは、PHP が一般的にどのように機能するかということです。

于 2012-09-29T14:12:49.480 に答える