Механизм перегрузки функций
&warn.deprecated.feature-7-2-0.removed-8-0-0;
Зачастую заставить работать существующее PHP-приложение в многобайтовом
окружении оказывается довольно трудной задачей. Это происходит, потому что
большинство PHP-приложений написано с использованием стандартных функций
обработки строк, таких как substr, которые не умеют
работать со строками в многобайтовых кодировках.
mbstring поддерживает механизм 'перегрузки функций', который позволяет
сообщить приложению о том, что используется многобайтовая кодировка, без
модификации кода, отвечающего за работу со строками. Например, если включена
перегрузка функций, то функция mb_substr будет вызываться
вместо 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
Не рекомендуется использовать перегрузку функций в контексте
каждой директории, так как добиться стабильной работы в этом случае пока
не удалось, и это может привести к неожидаемому поведению приложения.