覆盖默认的PHP功能

时间:2010-10-13 21:04:57

标签: php function override

我有脚本,其中basename()使用了100-1000s的时间,我只是想我们是否可以覆盖函数而不是将函数名更改为所有脚本中的其他内容。

basename()的问题在于它与外语文件的名称不兼容。我在php网站http://php.net/manual/en/function.override-function.php上找到了一个,但它需要PECL任何其他选择吗?

3 个答案:

答案 0 :(得分:7)

您可以使用命名空间覆盖现有的函数名称:

namespace blarg;
function basename() {
  return 'whatever';
}
$base = basename();

即,在blarg命名空间中对basename()的任何调用都将使用您的新版本的函数。

答案 1 :(得分:2)

另一种选择是runkit。但这在大多数服务器上都不太可能启用。

答案 2 :(得分:1)

您可以在调用basename之前更改语言环境:

setlocale(LC_ALL, 'en_US.UTF8');

setlocale