PHP Monkey补丁为第三方课程

时间:2017-02-23 09:14:06

标签: php class monkeypatching

我在第三方库中有以下课程,我不应该修改。

<?php

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

        $mail->setFrom('from@example.com', 'Your Name');
        $mail->addAddress('myfriend@example.net', '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。因此无法保证我的所有服务器都可以使用它。我了解到这种方法称为Monkey Patching。

所有答案都很老,我希望有任何新的解决方案。

1 个答案:

答案 0 :(得分:0)

Patchwork库非常简单,只需很少的尝试即可使用。

  

http://patchwork2.org/

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