2011-06-16 53 views
-1

是否有可能在Zend中動態重載函數?如何使用Zend動態覆蓋函數?

class My_Core_Default_Api extends Zend_Mail_Transport_Sendmail 
{ 
    public function getApi() 
    { 
     echo "Old Api"; 
    } 
} 

class My_Core_New_Api extends Zend_Mail_Transport_Sendmail 
{ 
    public function getApi() 
    { 
     echo "New Api"; 
    } 
} 

在這裏我想重寫Core_Default_Api->getApi()Core_New_Api->getApi()。任何建議請

+3

做兩個班有什麼關係呢?你知道'延伸'嗎? – 2011-06-16 06:25:42

+1

不是Zend Framework的問題。這是一個基本的PHP問題。正如其他答案和評論所暗示的那樣,研究一下PHP的面向對象功能 - 特別是'extends'關鍵字 – 2011-06-16 07:23:30

回答

0
class My_Core_New_Api extends My_Core_Default_Api { 
    public function getApi() 
    { 
    echo "New Api"; 
    // if you'd like to also include functionality of parent class 
    My_Core_Default_Api::getApi(); 
    } 
} 
0

這不是真正的「Zend」的問題。這是更多的PHP &設計模式的問題。

問題是,你需要切換郵件傳輸的情況下 - 你要找的依賴注入,也許....或代理或外觀設計模式。你需要一個地方,你將改變班級,它會改變其他地方。你可以設置在配置和具有從配置加載propper類名和返回新實例......像這樣一類:

TransportSelector::getTransport()->send($mail);