首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP runkit_function_rename不能工作吗?

PHP runkit_function_rename不能工作吗?
EN

Stack Overflow用户
提问于 2011-04-28 03:26:26
回答 5查看 6.9K关注 0票数 4

此代码不起作用。为什么不行?

代码语言:javascript
复制
<?php
function test()
{
    echo 'test';
}
runkit_function_rename('test', 'test2');
test2();
?>

我真正想要的是这个。我使用的是一个有功能的系统。当我在localhost上时,我想让这个函数做一些不同的事情。我想用自己的东西覆盖这个函数。

所有替代方案也都是受欢迎的。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-04-28 03:34:31

您是否安装了PECL扩展?

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

代码语言:javascript
复制
This » PECL extension is not bundled with PHP.
票数 7
EN

Stack Overflow用户

发布于 2012-04-20 01:39:26

我和Runkit的关系也不太好。

你问到了其他选择,我绝对可以推荐这个:

Patchwork

Patchwork是一个PHP函数重写库。换句话说,它和Runkit做的工作差不多。

主要区别在于它是用纯PHP编写的--没有需要安装的扩展;只需要在代码的顶部添加一个require_once()

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

然而,与Runkit不同的是,它可以完美地工作,所以如果你能接受这个限制,我强烈推荐它。

Runkit的另一个替代方案,您可能想尝试一下PHP Test Helpers。这是一个PHP扩展,涵盖了几乎与Runkit相同的内容。它是由与PHPUnit相同的作者编写的,所以它应该非常好。然而,当我尝试安装这个的时候,我也没有太多的joy,所以我真的不能对它做太多的评论。

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

票数 3
EN

Stack Overflow用户

发布于 2011-04-28 03:34:08

我真正想要的是这个。我使用的是一个有功能的系统。当我在localhost上时,我想让这个函数做一些不同的事情。我想用自己的东西覆盖这个函数。

所有替代方案也都是受欢迎的。

代码语言:javascript
复制
function test() {
  if($_SERVER['HTTP_HOST'] == 'localhost' {
     // do one thing
  } else {
     // do other thing
  }
}

如果你打算使用runkit,你需要使用runkit_function_redefine,而不是runkit_function_rename来让相同的函数做不同的事情。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5809451

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档