Переопределить функцию php по умолчанию - PullRequest
7 голосов
/ 14 октября 2010

У меня есть скрипт, в котором basename() используется 100-1000 секунд, я просто думал, можно ли переопределить функцию вместо того, чтобы изменить имя функции на что-то другое во всех скриптах.

Проблема с basename() заключается в том, что он плохо работает с именами файлов на иностранных языках. Я нашел один на php сайте http://php.net/manual/en/function.override-function.php, но ему нужна PECL любая другая альтернатива?

Ответы [ 3 ]

7 голосов
/ 14 октября 2010

Вы можете использовать пространства имен для переопределения существующих имен функций:

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

Т.е., любой вызов basename () в пространстве имен blarg будет использовать вашу новую версию функции.

2 голосов
/ 14 октября 2010

Альтернативой будет runkit .Но это вряд ли будет включено на большинстве серверов.

1 голос
/ 14 октября 2010

Вы можете изменить локаль перед вызовом базового имени:

setlocale(LC_ALL, 'en_US.UTF8');

setlocale

...