1

CActiveRecordに依存していた既存の機能コードを変更しています。現在、スキーマドライバがないsybaseに接続しているため、CActiveRecordではなくCModelを使用して書き換えています。私の問題は、この一般的なOOPの概念を理解していないことかもしれません。

オリジナル:MyModelController.php

MyModel::model()->scenario='case1';

参照は::model()機能しなくなりました...このメソッドは基本クラスがCActiveRecordの場合にのみ機能すると思います。

/**
 * Returns the static model of the specified AR class.
 * @param string $className active record class name.
 * @return ClientProg the static model class
 */
public static function model($className=__CLASS__)
{
    return parent::model($className);
}

基本クラスがCActiveRecordであったときと同じ方法で、CModelに基づいているMyModelのシナリオ属性を設定するにはどうすればよいですか?

4

1 に答える 1

0

model() を呼び出すと、最初に内部的にインスタンスが作成され、次にこのキャッシュされたオブジェクトが参照されます。

メソッドが静的で、インスタンス化されたバージョンのプロパティに依存しない場合、後で頭痛の種になります。

静的プロパティがニーズを満たすかどうかを確認するか、シナリオをパラメーターとして静的呼び出しに渡します。

とにかく、その悪を静的にするので、できれば避けてください。

于 2012-12-13T00:08:25.660 に答える