mirror of
https://github.com/php/doc-ru.git
synced 2025-08-20 23:31:15 +00:00
146 lines
5.9 KiB
XML
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
|
||
-->
|