如何使用Zend动态覆盖函数


How to dynamically override functions using 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_New_Api->getApi()覆盖Core_Default_Api->getApi()。任何建议请

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();
  }
}

这不是真正的"Zend"问题。它更多的是PHP&设计模式问题。

问题是,您需要切换邮件传输的实例——您正在寻找依赖项注入,也许。。。。或Proxy或Facade设计图案。你需要一个地方,在那里你可以切换课程,其他地方也会改变。我会在config中设置它,并有一个从config加载propper类名并返回新实例的类。。。像这样的东西:

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