references: fixes

git-svn-id: https://svn.php.net/repository/phpdoc/ru/trunk@345518 c90b9560-bf6c-de11-be94-00142212c4b1
This commit is contained in:
Alexey Pyltsyn
2018-08-15 08:54:05 +00:00
parent 3595493e2e
commit cafb10da9d

View File

@ -17,7 +17,7 @@
поэтому одно содержимое может иметь разные имена. Можно сделать аналогию с поэтому одно содержимое может иметь разные имена. Можно сделать аналогию с
именами файлов Unix и их именами: имена переменных - записи в именами файлов Unix и их именами: имена переменных - записи в
каталоге, а содержимое переменной - это сам файл. Ссылки в PHP - аналог каталоге, а содержимое переменной - это сам файл. Ссылки в PHP - аналог
жёстких ссылок (hardlinks) в файловых системах Unix. жёстких ссылок в файловых системах Unix.
</simpara> </simpara>
</sect1> </sect1>
@ -99,7 +99,7 @@ $foo =& find_var($bar);
<literal>=&amp;</literal> в этом случае не рекомендуется и вызывает <literal>=&amp;</literal> в этом случае не рекомендуется и вызывает
сообщение <constant>E_DEPRECATED</constant> в PHP 5.3 и последующих версиях, сообщение <constant>E_DEPRECATED</constant> в PHP 5.3 и последующих версиях,
а также сообщение <constant>E_STRICT</constant> в более ранних версиях. а также сообщение <constant>E_STRICT</constant> в более ранних версиях.
Начиная с PHP 7.0 это синтаксически некорректно. Начиная с PHP 7.0, это синтаксически некорректно.
(Технически разница в том, что в PHP 5 переменные объекта, подобно ресурсам, (Технически разница в том, что в PHP 5 переменные объекта, подобно ресурсам,
являются просто указателем на фактические данные объекта, поэтому ссылки на объекты являются просто указателем на фактические данные объекта, поэтому ссылки на объекты
не те же самые "ссылки", о которых говорилось ранее (псевдонимы). не те же самые "ссылки", о которых говорилось ранее (псевдонимы).
@ -200,8 +200,8 @@ $c = 7; //$c не ссылка и не изменяет значений $a и $
/* Присвоение массивов */ /* Присвоение массивов */
$arr = array(1); $arr = array(1);
$a =& $arr[0]; //$a и $arr[0] ссылаются на одно значение $a =& $arr[0]; // $a и $arr[0] ссылаются на одно значение
$arr2 = $arr; //присвоение не по ссылке! $arr2 = $arr; // присвоение не по ссылке!
$arr2[0]++; $arr2[0]++;
/* $a == 2, $arr == array(2) */ /* $a == 2, $arr == array(2) */
/* Содержимое $arr изменилось, хотя было присвоено не по ссылке! */ /* Содержимое $arr изменилось, хотя было присвоено не по ссылке! */
@ -223,12 +223,11 @@ $arr2[0]++;
<programlisting role="php"> <programlisting role="php">
<![CDATA[ <![CDATA[
<?php <?php
function foo(&$var) function foo(&$var) {
{
$var++; $var++;
} }
$a=5; $a = 5;
foo($a); foo($a);
?> ?>
]]> ]]>
@ -259,8 +258,7 @@ foo($a);
<programlisting role="php"> <programlisting role="php">
<![CDATA[ <![CDATA[
<?php <?php
function foo(&$var) function foo(&$var) {
{
$var =& $GLOBALS["baz"]; $var =& $GLOBALS["baz"];
} }
foo($bar); foo($bar);
@ -278,7 +276,7 @@ foo($bar);
доступна в функции <varname>foo</varname> (доступно лишь её значение через доступна в функции <varname>foo</varname> (доступно лишь её значение через
<varname>$var</varname>, но <varname>$var</varname> имеет только значение <varname>$var</varname>, но <varname>$var</varname> имеет только значение
переменной и не имеет связи имя-значение в таблице имен переменных). переменной и не имеет связи имя-значение в таблице имен переменных).
Вы можете воспользоваться <link linkend="language.references.return">возвращением Вы можете воспользоваться <link linkend="language.references.return">возвратом
ссылок</link> из функции для привязки внешней перменной к другому значению. ссылок</link> из функции для привязки внешней перменной к другому значению.
</simpara> </simpara>
</sect1> </sect1>
@ -292,12 +290,11 @@ foo($bar);
<programlisting role="php"> <programlisting role="php">
<![CDATA[ <![CDATA[
<?php <?php
function foo(&$var) function foo(&$var) {
{
$var++; $var++;
} }
$a=5; $a = 5;
foo($a); foo($a);
// $a здесь равно 6 // $a здесь равно 6
?> ?>
@ -331,12 +328,10 @@ foo($a);
<programlisting role="php"> <programlisting role="php">
<![CDATA[ <![CDATA[
<?php <?php
function foo(&$var) function foo(&$var) {
{
$var++; $var++;
} }
function &bar() function &bar() {
{
$a = 5; $a = 5;
return $a; return $a;
} }
@ -346,7 +341,7 @@ foo(bar());
</programlisting> </programlisting>
</informalexample> </informalexample>
См. также объяснение <link См. также объяснение <link
linkend="language.references.return">возвращения по ссылке</link>. linkend="language.references.return">возрата по ссылке</link>.
</para> </para>
</listitem> </listitem>
</itemizedlist> </itemizedlist>
@ -358,12 +353,10 @@ foo(bar());
<programlisting role="php"> <programlisting role="php">
<![CDATA[ <![CDATA[
<?php <?php
function foo(&$var) function foo(&$var) {
{
$var++; $var++;
} }
function bar() // Операция & отсутствует function bar() { // Операция & отсутствует
{
$a = 5; $a = 5;
return $a; return $a;
} }
@ -387,9 +380,9 @@ foo(new Foobar()) // Вызывает уведомление с PHP 7.0.7
</sect1> </sect1>
<sect1 xml:id="language.references.return"> <sect1 xml:id="language.references.return">
<title>Возрат по ссылке</title> <title>Возврат по ссылке</title>
<para> <para>
Возрат по ссылке используется в тех случаях, когда вы хотите Возврат по ссылке используется в тех случаях, когда вы хотите
использовать функцию для выбора переменной, с которой должна быть связана использовать функцию для выбора переменной, с которой должна быть связана
данная ссылка. <emphasis>Не</emphasis> используйте возврат по ссылке данная ссылка. <emphasis>Не</emphasis> используйте возврат по ссылке
для увеличения производительности. Ядро PHP само занимается оптимизацией. для увеличения производительности. Ядро PHP само занимается оптимизацией.
@ -430,7 +423,7 @@ echo $myValue; // отобразит новое значение
</note> </note>
<note> <note>
<simpara> <simpara>
Если вы возвращаете ссылку из функции используя следующий синтаксис: Если вы возвращаете ссылку из функции, используя следующий синтаксис:
<literal>return ($this->value);</literal>, это <emphasis>не</emphasis> <literal>return ($this->value);</literal>, это <emphasis>не</emphasis>
будет работать, так как вы возвращаете по ссылке результат будет работать, так как вы возвращаете по ссылке результат
<emphasis>выражения</emphasis>, а не переменную. По ссылке можно <emphasis>выражения</emphasis>, а не переменную. По ссылке можно