svn: /phpdoc/ru/trunk/ features/commandline.xml reference/exec/functions/proc-open.xml reference/pdo/pdo/prepare.xml reference/pdo/pdo/setattribute.xml reference/var/functions/var-export.xml
[email protected] (Sergey Panteleev)
| Newsgroups | php.doc.ru |
|---|---|
| Message-ID | <[email protected]> |
sergey Thu, 05 Mar 2020 10:44:02 +0000
Revision: http://svn.php.net/viewvc?view=revision&revision=349312
Log:
docs(ru): Updated to English revision
Changed paths:
U phpdoc/ru/trunk/features/commandline.xml
U phpdoc/ru/trunk/reference/exec/functions/proc-open.xml
U phpdoc/ru/trunk/reference/pdo/pdo/prepare.xml
U phpdoc/ru/trunk/reference/pdo/pdo/setattribute.xml
U phpdoc/ru/trunk/reference/var/functions/var-export.xml
svn-diffs-349312.txt
(text/x-diff, 13.5 KB)
Modified: phpdoc/ru/trunk/features/commandline.xml
===================================================================
--- phpdoc/ru/trunk/features/commandline.xml 2020-03-05 10:39:55 UTC (rev 349311)
+++ phpdoc/ru/trunk/features/commandline.xml 2020-03-05 10:44:02 UTC (rev 349312)
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<!-- EN-Revision: 346151 Maintainer: rjhdby Status: ready -->
+<!-- EN-Revision: 349269 Maintainer: rjhdby Status: ready -->
<!-- Reviewed: yes Maintainer: lex -->
<!-- $Revision$ -->
<chapter xml:id="features.commandline" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
@@ -1729,6 +1729,30 @@
</tgroup>
</table>
+ <table>
+ <title>История изменений</title>
+ <tgroup cols="2">
+ <thead>
+ <row>
+ <entry>&Version;</entry>
+ <entry>&Description;</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>7.4.0</entry>
+ <entry>
+ Вы можете настроить встроенный веб-сервер так, чтобы он выполнял разветвление нескольких воркеров
+ для проверки кода, который требует нескольких одновременных запросов
+ к встроенному веб-серверу. Задайте в переменной окружения
+ <envar>PHP_CLI_SERVER_WORKERS</envar>
+ количество требуемых воркеров перед запуском
+ сервера.
+ </entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
<example>
<title>Запуск веб-сервера</title>
Modified: phpdoc/ru/trunk/reference/exec/functions/proc-open.xml
===================================================================
--- phpdoc/ru/trunk/reference/exec/functions/proc-open.xml 2020-03-05 10:39:55 UTC (rev 349311)
+++ phpdoc/ru/trunk/reference/exec/functions/proc-open.xml 2020-03-05 10:44:02 UTC (rev 349312)
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<!-- EN-Revision: 348652 Maintainer: tmn Status: ready -->
+<!-- EN-Revision: 349246 Maintainer: tmn Status: ready -->
<!-- Reviewed: yes Maintainer: lex -->
<!-- $Revision$ -->
<!-- splitted from ./en/functions/exec.xml, last change in rev 1.28 -->
@@ -14,7 +14,7 @@
&reftitle.description;
<methodsynopsis>
<type>resource</type><methodname>proc_open</methodname>
- <methodparam><type>string</type><parameter>cmd</parameter></methodparam>
+ <methodparam><type>mixed</type><parameter>cmd</parameter></methodparam>
<methodparam><type>array</type><parameter>descriptorspec</parameter></methodparam>
<methodparam><type>array</type><parameter role="reference">pipes</parameter></methodparam>
<methodparam choice="opt"><type>string</type><parameter>cwd</parameter><initializer>&null;</initializer></methodparam>
@@ -49,8 +49,28 @@
<term><parameter>cmd</parameter></term>
<listitem>
<para>
- Команда для выполнения
+ Командная для выполнения, указанная как строка (&string;).
+ Специальные символы должны быть должным образом экранированы,
+ и должны применяться правильные кавычки.
</para>
+ <note>
+ <simpara>
+ В <emphasis>Windows</emphasis>, если для <literal>bypass_shell</literal> не установлено значение &true; в
+ <parameter>other_options</parameter>, <parameter>cmd</parameter>
+ передается в <command>cmd.exe</command> (точнее, <literal>%ComSpec%</literal>)
+ с флагом <literal>/c</literal> в виде строки <emphasis>без кавычек</emphasis>
+ (т.е. точно так, как было задано в <function>proc_open</function>).
+ Это может привести к тому, что <command>cmd.exe</command> удалит заключающие из
+ <parameter>cmd</parameter> (подробности смотрите в документации <command>cmd.exe</command>),
+ приводя к неожиданному и потенциально даже опасному поведению, потому что сообщения об ошибках <command>cmd.exe</command> могут содержать (частично) переданный параметр
+ <parameter>cmd</parameter> (смотрите пример ниже).
+ </simpara>
+ </note>
+ <para>
+ Начиная с PHP 7.4.0, <parameter>cmd</parameter> может передаваться как массив (&array;) параметров команды.
+ В этом случае процесс будет открыт напрямую (не проходя через оболочку)
+ и PHP позаботится о экранировании любого необходимого аргумента.
+ </para>
</listitem>
</varlistentry>
<varlistentry>
@@ -176,6 +196,13 @@
<row>
<entry>7.4.0</entry>
<entry>
+ <function>proc_open</function> теперь также принимает массив (&array;)
+ в <parameter>cmd</parameter>.
+ </entry>
+ </row>
+ <row>
+ <entry>7.4.0</entry>
+ <entry>
Добавлена опция <literal>create_process_group</literal> в
параметр <parameter>other_options</parameter>.
</entry>
@@ -256,6 +283,43 @@
</example>
</para>
+ <para>
+ <example>
+ <title><function>proc_open</function> причуда в Windows</title>
+ <simpara>
+ Хотя можно ожидать, что следующая программа будет искать в файле
+ <filename>filename.txt</filename> текст <literal>search</literal>
+ и выводить результаты, она ведет себя несколько иначе.
+ </simpara>
+ <programlisting role="php">
+<![CDATA[
+<?php
+$descriptorspec = [STDIN, STDOUT, STDOUT];
+$cmd = '"findstr" "search" "filename.txt"';
+$proc = proc_open($cmd, $descriptorspec, $pipes);
+proc_close($proc);
+?>
+]]>
+ </programlisting>
+ &example.outputs;
+ <screen>
+<![CDATA[
+'findstr" "search" "filename.txt' не распознается как внутренняя или внешняя команда,
+работающая программа или пакетный файл.
+]]>
+ </screen>
+ <simpara>
+ Чтобы обойти это поведение, обычно достаточно
+ передать <parameter>cmd</parameter> в дополнительных кавычках:
+ </simpara>
+ <programlisting role="php">
+<![CDATA[
+$cmd = '""findstr" "search" "filename.txt""';
+]]>
+ </programlisting>
+ </example>
+ </para>
+
<!-- ptys are currently disabled
<para>
<example>
Modified: phpdoc/ru/trunk/reference/pdo/pdo/prepare.xml
===================================================================
--- phpdoc/ru/trunk/reference/pdo/pdo/prepare.xml 2020-03-05 10:39:55 UTC (rev 349311)
+++ phpdoc/ru/trunk/reference/pdo/pdo/prepare.xml 2020-03-05 10:44:02 UTC (rev 349312)
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!-- EN-Revision: 346459 Maintainer: rjhdby Status: ready -->
+<!-- EN-Revision: 349240 Maintainer: rjhdby Status: ready -->
<!-- Reviewed: yes -->
<!-- $Revision$ -->
<refentry xml:id="pdo.prepare" xmlns="http://docbook.org/ns/docbook">
@@ -55,6 +55,18 @@
также может заменять псевдопеременные на то, что больше подходит, если, например,
драйвер поддерживает только именованные или, наоборот, только неименованные псевдопеременные.
</para>
+ <note>
+ <simpara>
+ Начиная с PHP 5.3.0, синтаксический анализатор, используемый для эмулируемых подготовленных операторов
+ и для перезаписи именованных параметров или параметров стиля вопросительного знака, поддерживает нестандартные
+ обратные слеши для одинарных и двойных кавычек. Это означает, что завершающие
+ кавычки, непосредственно предшествующие обратной косой черте, не распознаются как таковые, что
+ может привести к неправильному обнаружению параметров, что приведет к сбою подготовленного оператора
+ при его выполнении. Обходной путь — не использовать эмулированную подготовку к таким
+ SQL-запросам и избегать перезаписи параметров, используя стиль параметров,
+ который изначально поддерживается драйвером.
+ </simpara>
+ </note>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
Modified: phpdoc/ru/trunk/reference/pdo/pdo/setattribute.xml
===================================================================
--- phpdoc/ru/trunk/reference/pdo/pdo/setattribute.xml 2020-03-05 10:39:55 UTC (rev 349311)
+++ phpdoc/ru/trunk/reference/pdo/pdo/setattribute.xml 2020-03-05 10:44:02 UTC (rev 349312)
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<!-- EN-Revision: 340311 Maintainer: tmn Status: ready -->
+<!-- EN-Revision: 349307 Maintainer: tmn Status: ready -->
<!-- Reviewed: yes Maintainer: lex -->
<!-- $Revision$ -->
<refentry xml:id="pdo.setattribute" xmlns="http://docbook.org/ns/docbook">
@@ -41,7 +41,7 @@
<listitem><para><literal>PDO::ERRMODE_SILENT</literal>:
Только установка кодов ошибок.</para></listitem>
<listitem><para><literal>PDO::ERRMODE_WARNING</literal>:
- Вызывать <link linkend="errorfunc.constants.errorlevels.e-warning">E_WARNING</link>.</para></listitem>
+ Вызывать <constant>E_WARNING</constant>.</para></listitem>
<listitem><para><literal>PDO::ERRMODE_EXCEPTION</literal>:
Выбрасывать <link linkend="class.pdoexception">исключения</link>.</para></listitem>
</itemizedlist>
Modified: phpdoc/ru/trunk/reference/var/functions/var-export.xml
===================================================================
--- phpdoc/ru/trunk/reference/var/functions/var-export.xml 2020-03-05 10:39:55 UTC (rev 349311)
+++ phpdoc/ru/trunk/reference/var/functions/var-export.xml 2020-03-05 10:44:02 UTC (rev 349312)
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<!-- EN-Revision: 343899 Maintainer: shein Status: ready -->
+<!-- EN-Revision: 349260 Maintainer: shein Status: ready -->
<!-- Reviewed: yes -->
<!-- $Revision$ -->
<!-- splitted from ./en/functions/var.xml, last change in rev 1.6 -->
@@ -74,6 +74,17 @@
</thead>
<tbody>
<row>
+ <entry>7.3.0</entry>
+ <entry>
+ Теперь объекты <classname>stdClass</classname> экспортируются в виде массива, приведенного
+ к объекту (массив <code>(object) array( ... )</code>), вместо использования
+ несуществующего метода <methodname>stdClass::__setState</methodname>.
+ Практический эффект заключается в том, что теперь <classname>stdClass</classname> можно
+ экспортировать, и полученный код будет работать даже в более ранних версиях
+ PHP.
+ </entry>
+ </row>
+ <row>
<entry>5.1.0</entry>
<entry>
Стало возможным экспортировать классы и массивы, содержащие
@@ -136,6 +147,30 @@
</para>
<para>
<example>
+ <title>Экспорт stdClass с PHP 7.3.0</title>
+ <programlisting role="php">
+<![CDATA[
+<?php
+$person = new stdClass;
+$person->name = 'ElePHPant ElePHPantsdotter';
+$person->website = 'https://php.net/elephpant.php';
+
+var_export($person);
+]]>
+ </programlisting>
+ &example.outputs;
+ <screen>
+<![CDATA[
+(object) array(
+ 'name' => 'ElePHPant ElePHPantsdotter',
+ 'website' => 'https://php.net/elephpant.php',
+)
+]]>
+ </screen>
+ </example>
+ </para>
+ <para>
+ <example>
<title>Экспорт классов c PHP 5.1.0</title>
<programlisting role="php">
<![CDATA[
@@ -231,8 +266,7 @@
<para>
Для того, чтобы можно было использовать сгенерированный <function>var_export</function>
PHP-код, необходимо, чтобы все затронутые объекты реализовывали
- магический метод <link linkend="object.set-state">__set_state</link>. Помните, что StdClass
- не реализует метод __set_state().
+ магический метод <link linkend="object.set-state">__set_state</link>. Единственное исключение — <classname>stdClass</classname>, который экспортируется с использованием массива, приведенного к объекту.
</para>
</note>
</refsect1>