Override default php function

﹥>﹥吖頭↗ 提交于 2019-12-17 16:35:56

问题


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?


回答1:


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.




回答2:


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




回答3:


You can change the locale before calling basename:

setlocale(LC_ALL, 'en_US.UTF8');

setlocale



来源:https://stackoverflow.com/questions/3927995/override-default-php-function

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!