Codice in classe genitore:Verificare se esiste una proprietà statica in una classe figlia dalla classe genitore (associazione statica avanzata)?
foreach(static::$_aReadOnlyDatabaseTables AS $TableName => $aColumns){
// Do something
}
Questo funziona quando $ _aReadOnlyDatabaseTables è definito nella classe figlia, ma genera un errore quando $ _aReadOnlyDatabaseTables è assente. Devo controllare se questa proprietà esiste prima.
penso che dovrebbe andare qualcosa come questo:
if(property_exists(static,$_aReadOnlyDatabaseTables)){
foreach(static::$_aReadOnlyDatabaseTables AS $TableName => $aColumns){
// Do something
}
}
Ma questo getta un errore di sintassi, unexpected ',', expecting T_PAAMAYIM_NEKUDOTAYIM
. L'utilizzo di $this
invece di static
non funziona, viene sempre valutato come falso.
Qual è la sintassi corretta per questo?
Ecco come si farebbe con i collegamenti statici avanzati. – nickb
@Nick Probabilmente sarebbe più veloce e più efficiente dichiarare semplicemente l'array nella classe genitore e sovrascriverlo nei bambini. Quindi puoi saltare il controllo della proprietà. L'override verrebbe eseguito una volta al momento della compilazione e non comporterebbe un sovraccarico aggiuntivo ogni volta che veniva chiamato il metodo. –
@ColinMorelli, grazie, lo farò anche io, ma il mio obiettivo per il momento era quello di rilevare qualsiasi classe figlia in cui questa proprietà non fosse ancora implementata. – Nick