File: version-compare.xml

package info (click to toggle)
php-doc 20081024-1
  • links: PTS
  • area: main
  • in suites: lenny
  • size: 57,752 kB
  • ctags: 3,858
  • sloc: xml: 686,554; php: 19,446; perl: 610; cpp: 500; makefile: 336; sh: 114; awk: 28
file content (180 lines) | stat: -rw-r--r-- 5,665 bytes parent folder | download
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
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- $Revision: 1.14 $ -->
<refentry xml:id="function.version-compare" xmlns="http://docbook.org/ns/docbook">
 <refnamediv>
  <refname>version_compare</refname>
  <refpurpose>Compares two "PHP-standardized" version number strings</refpurpose>
 </refnamediv>
 
 <refsect1 role="description">
  &reftitle.description;
  <methodsynopsis>
   <type>mixed</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>string</type><parameter>operator</parameter></methodparam>
  </methodsynopsis>
  <para>
   <function>version_compare</function> compares two "PHP-standardized"
   version number strings. This is useful if you would like to write programs
   working only on some versions of PHP.
  </para>
  <para>
   The function first replaces <literal>_</literal>, <literal>-</literal> and
   <literal>+</literal> with a dot <literal>.</literal> in the version
   strings and also inserts dots <literal>.</literal> before and after any
   non number so that for example '4.3.2RC1' becomes '4.3.2.RC.1'. Then it
   splits the results like if you were using explode('.', $ver). Then it
   compares the parts starting from left to right. If a part contains
   special version strings these are handled in the following order:
   <literal>dev</literal> &lt; <literal>alpha</literal> =
   <literal>a</literal> &lt; <literal>beta</literal> =
   <literal>b</literal> &lt; <literal>RC</literal> &lt;
   <literal>pl</literal>. This way not only versions with different levels
   like '4.1' and '4.1.2' can be compared but also any PHP specific version
   containing development state.
  </para>
 </refsect1>

 <refsect1 role="parameters">
  &reftitle.parameters;
  <para>
   <variablelist>
    <varlistentry>
     <term><parameter>version1</parameter></term>
     <listitem>
      <para>
       First version number.
      </para>
     </listitem>
    </varlistentry>
    <varlistentry>
     <term><parameter>version2</parameter></term>
     <listitem>
      <para>
       Second version number.
      </para>
     </listitem>
    </varlistentry>
    <varlistentry>
     <term><parameter>operator</parameter></term>
     <listitem>
      <para>
       If you specify the third optional <parameter>operator</parameter>
       argument, you can test for a particular relationship. The
       possible operators are: <literal>&lt;</literal>,
       <literal>lt</literal>, <literal>&lt;=</literal>,
       <literal>le</literal>, <literal>&gt;</literal>,
       <literal>gt</literal>, <literal>&gt;=</literal>,
       <literal>ge</literal>, <literal>==</literal>,
       <literal>=</literal>, <literal>eq</literal>,
       <literal>!=</literal>, <literal>&lt;&gt;</literal>,
       <literal>ne</literal> respectively. 
      </para>
      <para>
       This parameter is case-sensitive, so values should be lowercase.
      </para>
     </listitem>
    </varlistentry>
   </variablelist>
  </para>
 </refsect1>

 <refsect1 role="returnvalues">
  &reftitle.returnvalues;
  <para>
   By default, <function>version_compare</function> returns
   <literal>-1</literal> if the first version is lower than the second, 
   <literal>0</literal> if they are equal, and
   <literal>1</literal> if the second is lower. 
  </para>
  <para>
   When using the optional <parameter>operator</parameter> argument, the
   function will return &true; if the relationship is the one specified
   by the operator, &false; otherwise.   
  </para>
 </refsect1>

 <refsect1 role="examples">
  &reftitle.examples;
  <para>
   The examples below use the <constant>PHP_VERSION</constant> constant,
   because it contains the value of the PHP version that is executing
   the code.
  </para>
  <para>
   <example>
    <title><function>version_compare</function> examples</title>
    <programlisting role="php">
<![CDATA[
<?php
if (version_compare(PHP_VERSION, '6.0.0') === 1) {
    echo 'I am at least PHP version 6.0.0, my version: ' . PHP_VERSION . "\n";
}

if (version_compare(PHP_VERSION, '5.3.0') === 1) {
    echo 'I am at least PHP version 5.3.0, my version: ' . PHP_VERSION . "\n";
}

if (version_compare(PHP_VERSION, '5.0.0', '>')) {
    echo 'I am using PHP 5, my version: ' . PHP_VERSION . "\n";
}

if (version_compare(PHP_VERSION, '5.0.0', '<')) {
    echo 'I am using PHP 4, my version: ' . PHP_VERSION . "\n";
}
?>
]]>
    </programlisting>
   </example>
  </para>
 </refsect1>

 <refsect1 role="notes">
  &reftitle.notes;
  <note>
   <para>
    The <constant>PHP_VERSION</constant> constant holds current PHP version.
   </para>
  </note>
  <note>
   <para>
    Note that pre-release versions, such as 5.3.0-dev, are considered
    lower than their final release counterparts (like 5.3.0).
   </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:"../../../../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
-->