0
我想执行的每个从基类扩展类initialize()
方法Execute方法一次,使用late static bindings:每个子类
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
属性被整个扩展类共享。
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'
有没有简单的方法来实现它?
改变'$ initialized'到一个数组,在其中添加初始化类,并检查是否存在等带有'in_array()'的(Child-)类 – dognose