In PHP, se un attributo statico è definito nella classe padre, non può essere sovrascritto in una classe figlio. Ma mi chiedo se c'è un modo per aggirare questo.Ereditarietà di membri statici in PHP
Sto provando a scrivere un wrapper per la funzione di qualcun altro (un po 'goffo). La funzione in questione può essere applicata a molti tipi di dati diversi ma richiede diversi flag e opzioni per ciascuno. Ma il 99% delle volte, un valore predefinito per ogni tipo sarebbe sufficiente.
Sarebbe bello se questo potesse essere fatto con l'ereditarietà, senza dover scrivere nuove funzioni ogni volta. Per esempio:
class Foo {
public static $default = 'DEFAULT';
public static function doSomething ($param = FALSE) {
$param = ($param === FALSE) ? self::$default : $param;
return $param;
}
}
class Bar extends Foo {
public static $default = 'NEW DEFAULT FOR CHILD CLASS';
}
echo Foo::doSomething() . "\n";
// echoes 'DEFAULT'
echo Bar::doSomething() . "\n";
// echoes 'DEFAULT' not 'NEW DEFAULT FOR CHILD CLASS'
// because it references $default in the parent class :(
Sarebbe bello e grazie per le informazioni. Ma ahimè, ho bisogno di qualcosa che verrà eseguito nel mio attuale ambiente di produzione (5.2.6). GRAZIE! – PartialOrder