Механизм перегрузки функций

Внимание

Эта функциональность объявлена УСТАРЕВШЕЙ начиная с PHP 7.2.0 и была УДАЛЕНА в версии PHP 8.0.0. Использовать эту функцию крайне не рекомендуется.

Зачастую заставить работать существующее PHP-приложение в многобайтовом окружении оказывается довольно трудной задачей. Это происходит, потому что большинство PHP-приложений написано с использованием стандартных функций обработки строк, таких как substr(), которые не умеют работать со строками в многобайтовых кодировках.

mbstring поддерживает механизм 'перегрузки функций', который позволяет сообщить приложению о том, что используется многобайтовая кодировка, без модификации кода, отвечающего за работу со строками. Например, если включена перегрузка функций, то функция mb_substr() будет вызываться вместо substr(). Этот механизм во многих случаях позволяет портировать приложения, поддерживающие только однобайтовые кодировки, в многобайтное окружение.

Для использования механизма перегрузки функций нужно задать настройке mbstring.func_overload в php.ini положительное значение, которое представляет собой комбинацию битовых масок, определяющих категории функций, которые нужно перегружать. Это будет число 1 для перегрузки функции mail(). 2 для строковых функций, 4 для функций регулярных выражений. Например, если значение настройки равно 7, то почтовые, строковые и функции регулярных выражений будут перегружаться. Список перегружаемых функций приведён ниже.

Функции, которые будут перегружены
значение настройки mbstring.func_overloadисходная функцияперегруженная функция
1mail()mb_send_mail()
2strlen()mb_strlen()
2strpos()mb_strpos()
2strrpos()mb_strrpos()
2substr()mb_substr()
2strtolower()mb_strtolower()
2strtoupper()mb_strtoupper()
2stripos()mb_stripos()
2strripos()mb_strripos()
2strstr()mb_strstr()
2stristr()mb_stristr()
2strrchr()mb_strrchr()
2substr_count()mb_substr_count()

Замечание:

Не рекомендуется использовать перегрузку функций в контексте каждой директории, так как добиться стабильной работы в этом случае пока не удалось, и это может привести к неожидаемому поведению приложения.

To Top