PHP runkit_function_rename不起作用?

Jen*_*ell 4 php rename function

此代码不起作用.为什么不?

<?php
function test()
{
    echo 'test';
}
runkit_function_rename('test', 'test2');
test2();
?>
Run Code Online (Sandbox Code Playgroud)

我真正想要的是这个.我正在使用具有功能的系统.当我在localhost时,我希望该功能可以做一些不同的事情.我想用自己的东西覆盖这个函数.

欢迎所有替代方案.

Nan*_*nne 7

你安装了PECL扩展吗?

http://www.php.net/manual/en/runkit.installation.php

This » PECL extension is not bundled with PHP.
Run Code Online (Sandbox Code Playgroud)

  • 好吧,如果它没有安装,你可能会得到一个"找不到函数"错误,因为在那种情况下该函数不存在:) (2认同)

Spu*_*ley 5

我在 Runkit 上也从来没有运气。

您要求替代方案,我绝对可以推荐这个:

拼布

Patchwork 是一个 PHP 函数覆盖库。换句话说,它的工作与 Runkit 大致相同。

主要区别在于它是用纯 PHP 编写的 - 无需安装扩展;只是require_once()代码顶部的 a 。

另一方面是,因为它是纯 PHP,所以它只能替换程序中定义的函数;即它不能像 Runkit 那样覆盖 PHP 内置函数。您问题中的示例可以与 Patchwork 配合使用,但尝试覆盖 PHP 函数mysql_query()是不可能的。

然而,与 Runkit 不同的是,它运行得很好,所以如果你可以忍受这个限制,我强烈推荐它。

您可能想要尝试的 Runkit 的另一个替代方案是PHP Test Helpers。这是一个 PHP 扩展,涵盖的内容与 Runkit 几乎相同。它和 PHPUnit 是同一个作者写的,所以应该很不错。然而,当我尝试安装这个时,我也没有太多的喜悦,所以我不能对它发表太多评论。

我从您在其他地方对此问题的评论中注意到您正在运行Windows(即WAMP)。Runkit 和 PHP Test Helpers 均未随 Windows 可执行文件提供;为了在 Windows 中使用它们中的任何一个,您需要自己从 C 源代码编译扩展。因此,如果您使用的是 Windows,那么 Patchwork 是您唯一明智的选择。