2017-02-23 74 views
0

我有一个第三方库,我不应该修改下面的类。PHP猴修补第三方类

<?php 

class MyMailer { 
    public function send() { 
     $mail = new PHPMailer(); 

     $mail->setFrom('[email protected]', 'Your Name'); 
     $mail->addAddress('[email protected]', 'My Friend'); 
     $mail->Subject = 'First PHPMailer Message'; 
     $mail->Body = 'Hi! This is my first e-mail sent through PHPMailer.'; 

     $mail->Send(); 
    } 

    public function check(){ 
     //code 
    } 
} 

我如何可以覆盖或钩的send()方法或者我能覆盖整个班级MyMailer用我自己的新类?

下面的链接建议使用未默认与PHP捆绑的runKit。所以不能保证它在我的所有服务器中都可用。我了解到这种方法被称为猴子修补。

所有的答案是很老,我想,如果有任何可用的新的解决方案。

+0

难道你不能扩展类并添加一个'send'方法到不调用'parent :: send()'的新子类吗?如果您的代码需要实例化MyMailer基... – CD001

+0

@ CD001:很多外部库使用此方法,我无法编辑它们以使用扩展类。 – Purus

+0

不,扩展的班级将是你的任何你想要的 – RiggsFolly

回答

0

拼图库非常简单,我只用很少的尝试就可以完成它。

http://patchwork2.org/

  1. Monekey修补任何内部和其他方法。
  2. 易于使用。