1
0
mirror of https://github.com/php/doc-ru.git synced 2026-04-28 09:43:16 +02:00
Files
archived-doc-ru/reference/mbstring/overloading.xml
T

146 lines
5.9 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 669c19f74eba53dc8437027380ecc6a6a59ab0bf Maintainer: tmn Status: ready -->
<!-- Reviewed: no -->
<chapter xml:id="mbstring.overload" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>
Механизм перегрузки функций
</title>
<para>
&warn.deprecated.feature-7-2-0.removed-8-0-0;
</para>
<para>
Зачастую заставить работать существующее PHP-приложение в многобайтовом
окружении оказывается довольно трудной задачей. Это происходит, потому что
большинство PHP-приложений написано с использованием стандартных функций
обработки строк, таких как <function>substr</function>, которые не умеют
работать со строками в многобайтовых кодировках.
</para>
<para>
mbstring поддерживает механизм 'перегрузки функций', который позволяет
сообщить приложению о том, что используется многобайтовая кодировка, без
модификации кода, отвечающего за работу со строками. Например, если включена
перегрузка функций, то функция <function>mb_substr</function> будет вызываться
вместо <function>substr</function>. Этот механизм во многих случаях позволяет
портировать приложения, поддерживающие только однобайтовые кодировки, в
многобайтное окружение.
</para>
<para>
Для использования механизма перегрузки функций нужно задать настройке
<literal>mbstring.func_overload</literal> в &php.ini; положительное значение,
которое представляет собой комбинацию битовых масок, определяющих категории
функций, которые нужно перегружать. Это будет число 1 для перегрузки функции
<function>mail</function>. 2 для строковых функций, 4 для функций регулярных
выражений. Например, если значение настройки равно 7, то почтовые, строковые и
функции регулярных выражений будут перегружаться. Список перегружаемых функций
приведён ниже.
<table>
<title>Функции, которые будут перегружены</title>
<tgroup cols="3">
<thead>
<row>
<entry>значение настройки mbstring.func_overload</entry>
<entry>исходная функция</entry>
<entry>перегруженная функция</entry>
</row>
</thead>
<tbody>
<row>
<entry>1</entry>
<entry><function>mail</function></entry>
<entry><function>mb_send_mail</function></entry>
</row>
<row>
<entry>2</entry>
<entry><function>strlen</function></entry>
<entry><function>mb_strlen</function></entry>
</row>
<row>
<entry>2</entry>
<entry><function>strpos</function></entry>
<entry><function>mb_strpos</function></entry>
</row>
<row>
<entry>2</entry>
<entry><function>strrpos</function></entry>
<entry><function>mb_strrpos</function></entry>
</row>
<row>
<entry>2</entry>
<entry><function>substr</function></entry>
<entry><function>mb_substr</function></entry>
</row>
<row>
<entry>2</entry>
<entry><function>strtolower</function></entry>
<entry><function>mb_strtolower</function></entry>
</row>
<row>
<entry>2</entry>
<entry><function>strtoupper</function></entry>
<entry><function>mb_strtoupper</function></entry>
</row>
<row>
<entry>2</entry>
<entry><function>stripos</function></entry>
<entry><function>mb_stripos</function></entry>
</row>
<row>
<entry>2</entry>
<entry><function>strripos</function></entry>
<entry><function>mb_strripos</function></entry>
</row>
<row>
<entry>2</entry>
<entry><function>strstr</function></entry>
<entry><function>mb_strstr</function></entry>
</row>
<row>
<entry>2</entry>
<entry><function>stristr</function></entry>
<entry><function>mb_stristr</function></entry>
</row>
<row>
<entry>2</entry>
<entry><function>strrchr</function></entry>
<entry><function>mb_strrchr</function></entry>
</row>
<row>
<entry>2</entry>
<entry><function>substr_count</function></entry>
<entry><function>mb_substr_count</function></entry>
</row>
</tbody>
</tgroup>
</table>
</para>
<note>
<para>
Не рекомендуется использовать перегрузку функций в контексте
каждой директории, так как добиться стабильной работы в этом случае пока
не удалось, и это может привести к неожидаемому поведению приложения.
</para>
</note>
</chapter>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->