コード:静的プロパティが親クラスの子クラスに存在するかどうかを確認します(遅延静的バインディング)。親クラスの
foreach(static::$_aReadOnlyDatabaseTables AS $TableName => $aColumns){
// Do something
}
これは$ _aReadOnlyDatabaseTablesは、子クラスで定義されているときに動作しますが、$ _aReadOnlyDatabaseTablesが存在しない場合にエラーをスローします。このプロパティが最初に存在するかどうかを確認する必要があります。
if(property_exists(static,$_aReadOnlyDatabaseTables)){
foreach(static::$_aReadOnlyDatabaseTables AS $TableName => $aColumns){
// Do something
}
}
しかし、これは構文エラーをスローし、unexpected ',', expecting T_PAAMAYIM_NEKUDOTAYIM
:
私はそれがこのような何かを行くべきだと思います。 static
の代わりに$this
を使用すると、どちらも機能しません。常にfalseを評価します。
これにはどのような構文が適していますか?
これは、それが後半の静的バインディングでどのように行われるかです。 – nickb
@ニック親クラスの配列を宣言し、子クラスでオーバーライドするだけで、より高速で効率的になります。その後、プロパティのチェックをスキップすることができます。オーバーライドはコンパイル時に1回実行され、メソッドが呼び出されるたびに追加のオーバーヘッドが発生することはありません。 –
@ CorinMorelli、ありがとう、それもやっていますが、私の目標は、このプロパティがまだ実装されていない子クラスを検出することでした。 – Nick