如何使用Zend动态覆盖函数?

时间:2011-06-16 06:21:53

标签: php zend-framework

是否可以在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()。请提出任何建议

2 个答案:

答案 0 :(得分: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();
  }
}

答案 1 :(得分:0)

这不是真正的“Zend”问题。它更像是PHP&设计模式问题。

问题是您需要切换邮件传输的实例 - 您正在寻找依赖注入,可能......或代理或外观设计模式。你需要一个地方来切换课程,它会在其他任何地方改变。我在config中设置了它并且有一个类从config加载propper类名并返回新实例......这样的东西:

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