-
Notifications
You must be signed in to change notification settings - Fork 105
/
Copy pathoverloading.xml
134 lines (131 loc) · 4.39 KB
/
overloading.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 669c19f74eba53dc8437027380ecc6a6a59ab0bf Maintainer: daijie Status: ready -->
<!-- CREDITS: Luffy -->
<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>
要使用函数重载功能,设置 &php.ini; 里的 <literal>mbstring.func_overload</literal> 为正值,就是表示为重载函数分类的位掩码组合。
要重载 <function>mail</function> 函数需要设置它为 1。字符串函数设置为 2,正则表达式函数为 4。
例如,当它设置为 7, mail、strings 和 正则表达式函数将都会被重载。
以下列表显示了重载的函数。
<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>
不推荐每个目录的范围(context)内使用函数重载选项,因为还无法确定在生产环境中是否稳定,也许会导致不确定的行为。
</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
-->