2012-07-20 66 views
0
<?php 
class A 
{ 
    public static function foo() 
    { 
     // some action 
    } 

    public static function __callStatic($method, $args) 
    { 
     self::foo(); 
     static::$method($args); 
    } 
} 

class B extends A 
{ 
    public static function bar(){} 
} 

我搜索PHP公共靜態函數處理程序,我嘗試__callStatic()但它只調用私有和受保護的方法。如何在PHP中捕獲公共靜態函數的調用?

回答

3

魔法方法,例如__call and __callStaticDocs僅適用於類中不存在的方法。當正常的方法調用發生時,它們不會被觸發。因此,用公共方法無法實現這一目標。

但是,您可以使這些方法爲private/protected,並用call_user_funccall_user_func_array以神奇方法調用它們。當然,這些函數的返回值也應該由魔術方法返回。

+0

@madfriend:爲什麼不提供您添加的內容作爲附加答案? – knittl 2012-07-20 19:00:48

+0

我認爲你已經回答了問題。我剛加了5便士。 – madfriend 2012-07-20 19:02:05

相關問題