1
0
mirror of https://github.com/php/doc-ru.git synced 2026-03-26 00:32:15 +01:00
Files
archived-doc-ru/reference/info/functions/getopt.xml
Sergey Panteleev 6d43fd64d7 Исправление форматирования
[skip-spellcheck]
[skip-lint]
2022-12-27 03:42:36 +03:00

326 lines
10 KiB
XML
Raw 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: 4d02fe98ddc684a0d82a3921ef189a71b98f4f04 Maintainer: tmn Status: ready -->
<!-- Reviewed: no -->
<refentry xml:id="function.getopt" xmlns="http://docbook.org/ns/docbook">
<refnamediv>
<refname>getopt</refname>
<refpurpose>
Получает параметры из списка аргументов командной строки
</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type class="union"><type>array</type><type>false</type></type><methodname>getopt</methodname>
<methodparam><type>string</type><parameter>short_options</parameter></methodparam>
<methodparam choice="opt"><type>array</type><parameter>long_options</parameter><initializer>[]</initializer></methodparam>
<methodparam choice="opt"><type>int</type><parameter role="reference">rest_index</parameter><initializer>&null;</initializer></methodparam>
</methodsynopsis>
<para>
Анализирует параметры переданные в скрипт.
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>short_options</parameter></term>
<listitem>
<simpara>
Каждый символ в этой строке будет рассматриваться как параметр и
сравниваться с символами, переданными в скрипт, перед которыми будет стоять
дефис (<literal>-</literal>).
</simpara>
<simpara>
Например, строка параметров <literal>"x"</literal> распознается, как
параметр <literal>-x</literal>.
</simpara>
<simpara>
Допускаются только символы a-z, A-Z и 0-9.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>long_options</parameter></term>
<listitem>
<simpara>
Массив параметров. Каждый элемент массива будет использоваться как строковый
параметр и сравниваться с параметрами, переданными в скрипт, перед которыми
будет стоять двойной дефис (<literal>--</literal>).
</simpara>
<simpara>
Например, элемент longopts <literal>"opt"</literal> будет расшифровываться
как <literal>--opt</literal>.
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>rest_index</parameter></term>
<listitem>
<simpara>
Если задан параметр <parameter>rest_index</parameter>, то индекс, на котором
остановился разбор, будет записан в него.
</simpara>
</listitem>
</varlistentry>
</variablelist>
</para>
<para>
Аргумент <parameter>short_options</parameter> может содержать следующие элементы:
<simplelist>
<member>Отдельные символы (не имеющие значений)</member>
<member>
Символы, за которыми следует двоеточие (параметр требует значения)
</member>
<member>
Символы, за которыми следует два двоеточия (необязательное значение)
</member>
</simplelist>
Значения параметров идут сразу за строкой параметра (символом). Если требуется значение, то нет разницы,
есть между ними пробел или нет.
<note>
<simpara>
Необязательные значения нельзя отделять от других пробелом
<literal>" "</literal>.
</simpara>
</note>
</para>
<para>
Значения массива <parameter>long_options</parameter> могут содержать:
<simplelist>
<member>Строка (параметр не принимает никаких значений)</member>
<member>Строка, за которой следует двоеточие (параметр требует значения)</member>
<member>Строка, за которой следует два двоеточия (необязательное значение)</member>
</simplelist>
</para>
<note>
<para>
Форматы <parameter>short_options</parameter> и <parameter>long_options</parameter>
практически совпадают. Различие состоит только в том, что
<parameter>long_options</parameter> принимает массив параметров (в котором каждый
элемент является параметром) в то время, как <parameter>short_options</parameter>
принимает строку (где параметром является каждый символ).
</para>
</note>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Функция вернёт массив пар параметров / аргументов&return.falseforfailure;.
</para>
<note>
<para>
Как только встретится первый символ, не являющийся параметром, разбор строки
команды будет завершён, а оставшаяся часть строки будет проигнорирована.
</para>
</note>
</refsect1>
<refsect1 role="changelog">
&reftitle.changelog;
<para>
<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry>&Version;</entry>
<entry>&Description;</entry>
</row>
</thead>
<tbody>
<row>
<entry>7.1.0</entry>
<entry>
Добавлен параметр <parameter>rest_index</parameter>.
</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example xml:id="getopt.examples-1">
<title>Пример использования <function>getopt</function>: основы</title>
<programlisting role="php">
<![CDATA[
<?php
// Скрипт example.php
$options = getopt("f:hp:");
var_dump($options);
?>
]]>
</programlisting>
<programlisting role="shell">
<![CDATA[
shell> php example.php -fvalue -h
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
array(2) {
["f"]=>
string(5) "value"
["h"]=>
bool(false)
}
]]>
</screen>
</example>
</para>
<para>
<example xml:id="getopt.examples-2">
<title>Пример использования <function>getopt</function>: добавление длинных опций</title>
<programlisting role="php">
<![CDATA[
<?php
// Скрипт example.php
$shortopts = "";
$shortopts .= "f:"; // Обязательное значение
$shortopts .= "v::"; // Необязательное значение
$shortopts .= "abc"; // Эти параметры не принимают никаких значений
$longopts = array(
"required:", // Обязательное значение
"optional::", // Необязательное значение
"option", // Нет значения
"opt", // Нет значения
);
$options = getopt($shortopts, $longopts);
var_dump($options);
?>
]]>
</programlisting>
<programlisting role="shell">
<![CDATA[
shell> php example.php -f "value for f" -v -a --required value --optional="optional value" --option
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
array(6) {
["f"]=>
string(11) "value for f"
["v"]=>
bool(false)
["a"]=>
bool(false)
["required"]=>
string(5) "value"
["optional"]=>
string(14) "optional value"
["option"]=>
bool(false)
}
]]>
</screen>
</example>
</para>
<para>
<example xml:id="getopt.examples-3">
<title>Пример использования <function>getopt</function>: Передача нескольких параметров как одного</title>
<programlisting role="php">
<![CDATA[
<?php
// Скрипт example.php
$options = getopt("abc");
var_dump($options);
?>
]]>
</programlisting>
<programlisting role="shell">
<![CDATA[
shell> php example.php -aaac
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
array(2) {
["a"]=>
array(3) {
[0]=>
bool(false)
[1]=>
bool(false)
[2]=>
bool(false)
}
["c"]=>
bool(false)
}
]]>
</screen>
</example>
</para>
<para>
<example xml:id="getopt.examples-4">
<title>Пример <function>getopt</function> с параметром <parameter>rest_index</parameter></title>
<programlisting role="php">
<![CDATA[
<?php
// Скрипт example.php
$rest_index = null;
$opts = getopt('a:b:', [], $rest_index);
$pos_args = array_slice($argv, $rest_index);
var_dump($pos_args);
]]>
</programlisting>
<programlisting role="shell">
<![CDATA[
shell> php example.php -a 1 -b 2 -- test
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
array(1) {
[0]=>
string(4) "test"
}
]]>
</screen>
</example>
</para>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><link linkend="reserved.variables.argv"><varname>$argv</varname></link></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
-->