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