PHP通过runkit覆盖一个方法

首先需要安装runkit扩展

这是原有类

namespace Fyn;

class Hello
{
    public function say(string $name): string {
        return sprintf('Hello %s', $name);
    }
}

通过runkit覆盖(必须先将类load进来才能覆盖)

if (class_exists(\Fyn\Hello:class)) {
    runkit_method_redefine(
        \Fyn\Hello:class,
        'say',
        '$msg',
        'return "Nihao {$msg}";'
    );
}

更多方法:http://php.net/manual/zh/book.runkit.php

不建议在生产环境中使用

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注