-
Notifications
You must be signed in to change notification settings - Fork 79
/
Copy pathversion-compare.xml
189 lines (179 loc) · 6.72 KB
/
version-compare.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
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 4e6f0774f03131cbeeb8c21019a690bf97fd22b6 Maintainer: hirokawa Status: ready -->
<!-- CREDITS: takagi,mumumu -->
<refentry xml:id="function.version-compare" xmlns="http://docbook.org/ns/docbook">
<refnamediv>
<refname>version_compare</refname>
<refpurpose>ふたつの "PHP 標準" バージョン番号文字列を比較する</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type class="union"><type>int</type><type>bool</type></type><methodname>version_compare</methodname>
<methodparam><type>string</type><parameter>version1</parameter></methodparam>
<methodparam><type>string</type><parameter>version2</parameter></methodparam>
<methodparam choice="opt"><type class="union"><type>string</type><type>null</type></type><parameter>operator</parameter><initializer>&null;</initializer></methodparam>
</methodsynopsis>
<para>
<function>version_compare</function>は、ふたつの "PHP 標準" バージョン
番号文字列を比較します。
</para>
<para>
この関数はまず、バージョン文字列の
<literal>_</literal>, <literal>-</literal>,
<literal>+</literal> をドット <literal>.</literal> で置き換えます。
さらに、数値でない部分の前後にドット <literal>.</literal> を追加します。
例えば '4.3.2RC1' は '4.3.2.RC.1' となります。
次に、左から右へ
各部分を比較していきます。特殊な文字列が含まれている場合は以下の順で
並べ替えます:
<literal>ここにないすべての文字列</literal> <
<literal>dev</literal> < <literal>alpha</literal> =
<literal>a</literal> < <literal>beta</literal> =
<literal>b</literal> < <literal>RC</literal> =
<literal>rc</literal> < <literal>#</literal> <
<literal>pl</literal> = <literal>p</literal>
この方法により、'4.1' と '4.1.2' のようなバージョンの違いだけではなく
PHP 固有の開発ステータスの違いも判断することが可能となります。
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>version1</parameter></term>
<listitem>
<para>
最初のバージョン番号。
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>version2</parameter></term>
<listitem>
<para>
ふたつめのバージョン番号。
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>operator</parameter></term>
<listitem>
<para>
オプションの演算子。
指定可能な演算子を以下に示します。
<literal><</literal>, <literal>lt</literal>,
<literal><=</literal>, <literal>le</literal>, <literal>></literal>,
<literal>gt</literal>, <literal>>=</literal>, <literal>ge</literal>,
<literal>==</literal>, <literal>=</literal>, <literal>eq</literal>,
<literal>!=</literal>, <literal><></literal>, <literal>ne</literal>
</para>
<para>
このパラメータは大文字小文字を区別するので、すべて小文字で指定しなければなりません。
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
デフォルトでは、<function>version_compare</function> の戻り値は
最初のバージョンが 2 番目のバージョンより小さい場合に <literal>-1</literal>、
同じ場合に <literal>0</literal>、そして 2 番目のバージョンのほうが小さい場合に
<literal>1</literal> となります。
</para>
<para>
オプションの引数 <parameter>operator</parameter> を使用すると、
指定した演算子による関係を満たす場合に &true;、それ以外の場合に
&false; を返すようになります。
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
以下の例では定数 <constant>PHP_VERSION</constant> を使用しています。
この定数には、コードを実行している PHP のバージョンが格納されています。
</para>
<para>
<example>
<title><function>version_compare</function> の例</title>
<programlisting role="php">
<![CDATA[
<?php
if (version_compare(PHP_VERSION, '7.0.0') >= 0) {
echo '7.0.0 より新しいバージョンの PHP を使っています。バージョンは ' . PHP_VERSION . " です。\n";
}
if (version_compare(PHP_VERSION, '5.3.0') >= 0) {
echo '5.3.0 より新しいバージョンの PHP を使っています。バージョンは ' . PHP_VERSION . " です。\n";
}
if (version_compare(PHP_VERSION, '5.0.0', '>=')) {
echo '5.0.0 より新しいバージョンの PHP を使っています。バージョンは ' . PHP_VERSION . " です。\n";
}
if (version_compare(PHP_VERSION, '5.0.0', '<')) {
echo 'まだ PHP 4 です。バージョンは ' . PHP_VERSION . " です。\n";
}
?>
]]>
</programlisting>
</example>
</para>
</refsect1>
<refsect1 role="notes">
&reftitle.notes;
<note>
<para>
<constant>PHP_VERSION</constant> 定数には現在の
PHP のバージョンが格納されます。
</para>
</note>
<note>
<para>
プレリリース版 (たとえば 5.3.0-dev など)
は、それに対応する正式版 (5.3.0) より小さいとみなされます。
</para>
</note>
<note>
<para>
<literal>alpha</literal> や
<literal>beta</literal> のようなバージョン文字列は、大文字小文字を区別します。
したがって、どこかから取得したバージョン文字列を PHP の標準に従わせるなら、
まず <function>strtolower</function> で小文字化してから
<function>version_compare</function> を呼ぶ必要があります。
</para>
</note>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><function>phpversion</function></member>
<member><function>php_uname</function></member>
<member><function>function_exists</function></member>
</simplelist>
</para>
</refsect1>
</refentry>
<!-- 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
-->