は、私は静的メンバでいくつかの基本クラスを考えてみましょう - 配列:静的メンバー(配列)を部分的にオーバーライド - これは可能ですか?
class BaseClass {
public static $definition = array(
'id' => array(type => 'int', 'required' => true),
'field1' => array(type => 'string', 'required' => true),
'field2' => array(type => 'bool', 'required' => true),
// and over8000 array items
);
}
それから私は、子クラスを作成し、私はこの静的配列を上書きしたいが、私は唯一の配列項目をchengeする必要があります。変更されたアイテムが1つしかないために、「over8000」アイテム全体をコピー・ペーストしない方法はありますか?言い換えれば
、私はこのように、この
class ChildClass extends BaseClass {
public static $definition = array(
'id' => array(type => 'int', 'required' => true),
'field1' => array(type => 'string', 'required' => false), // the only changed one
'field2' => array(type => 'bool', 'required' => true),
// and over8000 unchanged
);
}
が、よりコンパクトなものではありませんしたい:
class ChildClass extends BaseClass {
// yes I know this is invalid, lets call this a "pseudocode"
public static $definition['field1']['required'] = true;
}
が方法はありますか?
ありがとうございます。
P.S.このメンバは静的コンテキスト(ChildClass::$definition['field1'];
)でアクセスされるため、コンストラクタで変更を適用するには十分ではありません。
P.P.S.ただ明確にするために:私はすべての "機能"であるエンジンで作業しています。静的なコンテキストでもアクセスできる静的メンバーは、変更できないエンジンの部分です。
8kアイテムの静的配列?ちょうどうわー。私はそのアイテムでクラスを作成します。変更が必要な場合は、動的なのでSTATICとして定義しないでください。論文に戻って、実際にそれが必要かどうかを確認してください。 – daremachine
クラスから目的の値を返す静的メソッドを作成します。より柔軟になります。 – daremachine
over8000 - いとこの表情ですが、時には約50の項目があります。 「紙に戻る」とはどういうことですか?残念ながら、私はエンジンのすべてを使って作業しています。 – AlexandrX