2011-11-29 30 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到相关的问题表明这些扩展没有定期维护。

相关问题