在php 5.3中使用這種靜態「繼承」有點麻煩我需要測試靜態類中是否存在靜態函數,但是我需要從父類靜態類中進行測試。需要幫助,使用php5.3靜態繼承
我知道在PHP 5.3我可以使用'靜態'關鍵字排序模擬'這個'關鍵字。 我只是無法找到一種方法來測試函數是否存在。
下面是一個例子:
// parent class
class A{
// class B will be extending it and may or may not have
// static function name 'func'
// i need to test for it
public static function parse(array $a){
if(function_exists(array(static, 'func'){
static::func($a);
}
}
}
class B extends A {
public static function func(array $a){
// does something
}
}
所以現在我需要執行B::parse();
的想法是,如果子類有一個功能,它會被使用, 否則將無法使用。
我想:
function_exists(static::func){}
isset(static::func){}
這2不工作。
任何想法如何做到這一點? 順便說一下,我知道傳遞lambda函數作爲解決方法的可能性,在我的情況下,這不是 選項。
我有一種感覺,有一個非常簡單的解決方案,我現在無法想象。
現在我需要調用
is_callable(陣列( '靜',' func'))工作正常。我擔心如果'func'不存在,那麼is_callable可能會引發至少一個警告:變量沒有被定義,但它不會。如果func函數不存在,則返回false,這很好。 – Dmitri 2010-12-21 22:19:45