2011-11-29 55 views
1

我正在尋找一種方法來通過插件類來重載主項目類(ofc不是整個類 - 只有很少的方法,比如標題解析器或者某事)。 這可能嗎?有沒有辦法在PHP中使用OVERLOAD類?

+1

你的問題不是很清楚。你什麼意思?你想覆蓋你的主類的幾個選擇方法嗎? – Qqwy

+0

擴展課程?你能否給這個問題多一點背景? – deceze

+0

擴展不適合我。例如,我有「富」類有很多方法,其中之一是「解析」。 我正在尋找方法,其中包括插件類文件重載foo :: parse()[所以當核心調用foo :: parse()插件方法將被執行,而不是從核心的方法] – kiler129

回答

1

可以擴展類:

 
class A { 
    public function __get($value){ 
    switch($value){ 
     case "a1": return 1; break; 
     case "a2": return 2; break; 
    default: // error handler goes here 
     return "number out of range"; // or NULL or anything else 
     } 
    } // end of method __get 
    } // end of class A 

class B extends A { 
    public function __get($value){ 
    switch($value){ 
     case "a1": return 11; break; // we overload value of 1 
     case "b3": return 3; break; // we add these new properties 
     case "b4": return 4; break; 
    default: // check ancestor's properties 
     return parent::__get($value); 
     } 
    } // end of method __get 
    } //end of class B 
+0

它不能解決我的問題 - 核心不知道「B」類,所以調用「A」類。我正在尋找一種插件可以覆蓋由核心執行的操作的方法。 – kiler129

1

有覆蓋方法,例如一些方法runkit。但是this answer到相關的問題表明這些擴展沒有定期維護。

相關問題