У меня есть сценарий, в котором basename()
используется 100-1000 секунд, я просто думал, что если мы можем переопределить функцию, а не менять имя функции на что-то еще во всех сценариях.
Проблема с basename()
заключается в том, что она не работает хорошо с именами файлов на иностранных языках. Я нашел его на php-сайте http://php.net/manual/en/function.override-function.php, но ему нужна PECL
любая другая альтернатива?
Вы можете использовать пространства имен для переопределения имен существующих функций:
namespace blarg; function basename() { return 'whatever'; } $base = basename();
Т.е. любой вызов basename () в пространстве имен blarg будет использовать вашу новую версию функции.
Альтернативой будет runkit . Но это вряд ли будет включено на большинстве серверов.
Вы можете изменить локаль перед вызовом basename:
setlocale(LC_ALL, 'en_US.UTF8');
Setlocale