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