-Code in Elternklasse:Sehen Sie, ob eine statische Eigenschaft in einer Kindklasse aus der Elternklasse existiert (späte statische Bindung)?
foreach(static::$_aReadOnlyDatabaseTables AS $TableName => $aColumns){
// Do something
}
Dies funktioniert, wenn $ _aReadOnlyDatabaseTables in der Kindklasse definiert ist, sondern wirft einen Fehler, wenn $ _aReadOnlyDatabaseTables fehlt. Ich muss prüfen, ob diese Eigenschaft zuerst existiert.
denke ich, es so etwas wie dies gehen sollte:
if(property_exists(static,$_aReadOnlyDatabaseTables)){
foreach(static::$_aReadOnlyDatabaseTables AS $TableName => $aColumns){
// Do something
}
}
Aber das wirft einen Syntaxfehler, unexpected ',', expecting T_PAAMAYIM_NEKUDOTAYIM
. Mit $this
anstelle von static
funktioniert auch nicht, es wertet immer falsch.
Was ist die richtige Syntax für das?
So würde es mit späten statischen Bindungen gemacht werden. – nickb
@ Nick Es wäre wahrscheinlich schneller und effizienter, nur die Array in Ihrem Elternklasse zu deklarieren und bei Kindern außer Kraft setzen. Dann können Sie die Immobilienprüfung überspringen. Die Außerkraftsetzung würde einmal zur Kompilierungszeit erfolgen und würde nicht jedes Mal zusätzlichen Aufwand verursachen, wenn die Methode aufgerufen wird. –
@ColinMorelli, danke, ich werde das auch tun, aber mein Ziel war es vorerst, alle untergeordneten Klassen zu erkennen, in denen diese Eigenschaft noch nicht implementiert war. – Nick