0
Je suis en train d'exécuter initialize()
méthode pour chaque classe qui étend à partir d'un BaseClass, en utilisant late static bindings:méthode Execute une fois pour chaque classe enfant
class BaseClass
{
protected static $initialized = false;
public static function find()
{
static::initialize();
//TODO search entries and return as instances...
}
protected static function initialize()
{
if (static::$initialized)
return;
echo 'Initializing ', static::class, '<br/>';
//do important stuff
static::$initialized = true;
}
}
class Child1 extends BaseClass {}
class Child2 extends BaseClass {}
$initialized
propriété est partagée entre les classes dérivées.
Child1::find(); //Outputs 'Initializing Child1', as expected
Child2::find(); //Doesn't execute 'initialize()' because
//$initialized property was set to true by Child1
//Expected: 'Initializing Child2'
Existe-t-il un moyen simple d'y parvenir?
changement 'initialized' $ à un tableau, où vous ajoutez des classes initialisés et vérifier l'existence de la classe (Child-) avec 'in_array()' – dognose