Механизм перегрузки функций
&warn.deprecated.feature-7-2-0.removed-8-0-0;
Зачастую заставить работать существующее PHP-приложение в многобайтовом
окружении становится трудоёмкой задачей. Причина состоит в том,
что большую часть PHP-приложений написали со стандартными функциями
обработки строк наподобие substr, которые не умеют
работать со строками в многобайтовых кодировках.
Модуль mbstring поддерживает механизм «перегрузки функций»,
который сообщает приложению о работе с многобайтовой кодировкой,
без модификации кода, который отвечает за работу со строками. Например, при включении
перегрузки функций вместо функции substr
вызывается функция mb_substr.
Этот механизм часто помогает
переносить в многобайтовое окружение приложения,
которые поддерживают только однобайтовые кодировки.
Для активации механизма перегрузки функций потребуется задать настройке
mbstring.func_overload в &php.ini; положительное значение,
которое представляет собой комбинацию битовых масок для определения категорий
функций, которые требуется перегружать. Число 1 перегружает функции
mail, 2 — строковые функции, 4 — функций регулярных
выражений. Например, если значение настройки равно 7, то почтовые, строковые
и функции регулярных выражений станут перегружаться. Список перегружаемых функций
приведён ниже.
Функции, которые перегрузятся
значение настройки mbstring.func_overload
исходная функция
перегруженная функция
1
mail
mb_send_mail
2
strlen
mb_strlen
2
strpos
mb_strpos
2
strrpos
mb_strrpos
2
substr
mb_substr
2
strtolower
mb_strtolower
2
strtoupper
mb_strtoupper
2
stripos
mb_stripos
2
strripos
mb_strripos
2
strstr
mb_strstr
2
stristr
mb_stristr
2
strrchr
mb_strrchr
2
substr_count
mb_substr_count
Не рекомендуется включать перегрузку функций в контексте
каждой директории, так как добиться стабильной работы в такой конфигурации пока
не получилось, а поведение приложения становится неожиданным.