2012-03-15 10 views
0

私はYii blog tutorialを読んでいます。このコードはloadItems静的関数でYiiブログチュートリアルクエリ

foreach($models as $model) 
    self::$_items[$type][$model->code]=$model->name; 

何をやるん。 [$model->code]$model->nameはどこから来たのですが、このコード行は何をしていますか?

答えて

1

loadItemsは()コメント、またはポスト用のために、たとえば、あなたが必要とする特定の「タイプ」で使用可能な状態をロードする静的関数です。たとえば、「投稿編集ページ」を表示する直前に、「投稿」の利用可能な「ステータスの説明」を用意して、投稿ステータスドロップダウンに必要な値を設定します。

$モデルは、この静的関数内で、引用した行の直前でインスタンス化されます。これは実際に静的メソッドですが、内部では "Lookup"クラスをインスタンス化せずに呼び出されることを意味しますが、内部では他のことも行います。ここでの完全停止は、クラスメソッドが完全に含まれるコード単位であることを強調することです。それは、それが内部で行う必要があるものは何でも行うことができます。一般的には、その内部を気にする必要はありません(もちろん、それらの内部を設計し、コーディングしている場合を除きます)が、ここでは2つの異なるものを把握する必要があります。 から外部 - これは単に特定のクラスの検索項目を返すだけです。もう1つは内部ではですが、静的関数である一方で、いくつかのクラスオブジェクトをインスタンス化しています。 このインスタンシエーションは、YiiのActive Record機能、つまり必要なSQLを実行し、見つかったレコードの結果セットをLookup型のインスタンス化されたオブジェクトの配列として返す "findAll()"メソッドを使用して行われます。

これがいくつかクリアされることを願っています。