2

BranchSalariesCComponent から派生したクラスです。monthおよびプロパティの取得/設定メソッドがありyearます。

次のコードは機能しません (具体的には、初期化yearmonthプロパティも行いません)。

new BranchSalaries(array('id'=>'branch_salaries', 'year'=>$year, 'month'=>$month));

コンストラクターに配列を渡して初期化できるクラスを作成する最も簡単な方法は何ですか?

修正BranchSalariesは、CComponent から直接ではなく、CDataProvider から派生します。

4

2 に答える 2

1

Yii のようにクラスをセットアップするには、 を使用できますYii::createComponent()。カスタマイズされたコンストラクターを作成する必要はありません。あなたの場合、これは次のようになります。

Yii::createComponent(array(
    'class' => 'BranchSalaries',
    'id'=>'branch_salaries',
    'year'=>$year,
    'month'=>$month
));

ユーザーフレンドリーに見えませんが、自動オブジェクト作成に使用できます。

classパラメータは、パス エイリアスでも使用できます。

Yii::createComponent(array(
    'class' => 'ext.someExtension.BranchSalaries',
    'id'=>'branch_salaries',
    'year'=>$year,
    'month'=>$month
));

また、クラス スコープ外からクラス プロパティを設定するため、getter と setter が自動的に使用されます。

于 2013-06-12T13:02:07.770 に答える