覆盖默认的 php 函数

发布于 2024-09-27 07:56:38 字数 343 浏览 2 评论 0原文

我有一个脚本,其中 basename() 使用了 100-1000 秒的时间,我只是在想我们是否可以重写该函数,而不是在所有脚本中将函数名称更改为其他名称。

basename() 的问题是它不能很好地处理外语文件名。我在 php 网站 http://php.net/manual/en/function 上找到了一个.override-function.php 但它需要 PECL 还有其他替代方案吗?

I have script wherein basename() is used 100-1000s of time, I was just thinking if we can override the function rather than changing the function name to something else in all scripts.

The problem with basename() is that it doesnt works well with names of files in foreign languages. I found one on php site http://php.net/manual/en/function.override-function.php but it needs PECL any other alternative?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

缱倦旧时光 2024-10-04 07:56:38

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

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

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

You can use namespaces to override existing function names:

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

I.e., any call to basename() within the blarg namespace will use your new version of the function.

情绪 2024-10-04 07:56:38

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

An alternative would be runkit. But that's as unlikely to be enabled on most servers.

久伴你 2024-10-04 07:56:38

您可以在调用 basename 之前更改区域设置:

setlocale(LC_ALL, 'en_US.UTF8');

setlocale

You can change the locale before calling basename:

setlocale(LC_ALL, 'en_US.UTF8');

setlocale

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文