1
0
mirror of https://github.com/php/doc-ru.git synced 2026-03-24 07:42:22 +01:00
Files
archived-doc-ru/reference/info/functions/version-compare.xml
Mikhail Alferov 3f89f12094 Обновление перевода (#610)
Co-authored-by: Sergey Panteleev <sergey@php.net>
2023-12-26 09:45:29 +03:00

192 lines
7.3 KiB
XML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 4e6f0774f03131cbeeb8c21019a690bf97fd22b6 Maintainer: tmn Status: ready -->
<!-- Reviewed: no -->
<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> &lt;
<literal>dev</literal> &lt; <literal>alpha</literal> =
<literal>a</literal> &lt; <literal>beta</literal> =
<literal>b</literal> &lt; <literal>RC</literal> =
<literal>rc</literal> &lt; <literal>#</literal> &lt;
<literal>pl</literal> = <literal>p</literal>. Таким образом можно сравнивать
не только версии разных уровней, вроде '4.1' и '4.1.2', но и специфичные
версии, включающие статус разработки.
</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>
Необязательный параметр <parameter>operator</parameter>.
Возможные значения:
<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>.
</para>
<para>
Аргумент чувствителен к регистру, поэтому значения должны быть
в нижнем регистре.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
По умолчанию функция <function>version_compare</function> возвращает
<literal>-1</literal>, если первая версия меньше второй;
<literal>0</literal>, когда они равны;
<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 'Я использую PHP версии не ниже 7.0.0, моя версия: ' . PHP_VERSION . "\n";
}
if (version_compare(PHP_VERSION, '5.3.0') >= 0) {
echo 'Я использую PHP версии не ниже 5.3.0, моя версия: ' . PHP_VERSION . "\n";
}
if (version_compare(PHP_VERSION, '5.0.0', '>=')) {
echo 'Я использую PHP 5.0.0 или выше, моя версия: ' . 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
-->