HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-02-26
1 <p>В этом уроке мы изучим ссылки. Эта тема немного своеобразная: механизм ссылок напрямую используется редко.</p>
1 <p>В этом уроке мы изучим ссылки. Эта тема немного своеобразная: механизм ссылок напрямую используется редко.</p>
2 <p>Но это все равно важная тема. Когда мы начнем использовать массивы и объекты, нам понадобится понимание того, как ссылки работают.</p>
2 <p>Но это все равно важная тема. Когда мы начнем использовать массивы и объекты, нам понадобится понимание того, как ссылки работают.</p>
3 <p>Не относитесь к этому материалу слишком серьезно. Главное - уловить концепцию и знать само понятие, все остальное по необходимости.</p>
3 <p>Не относитесь к этому материалу слишком серьезно. Главное - уловить концепцию и знать само понятие, все остальное по необходимости.</p>
4 <p>Ссылки в PHP - это средство доступа к содержимому одной переменной под разными именами.</p>
4 <p>Ссылки в PHP - это средство доступа к содержимому одной переменной под разными именами.</p>
5 <p>Так работает доступ без ссылок:</p>
5 <p>Так работает доступ без ссылок:</p>
6 <p>А теперь попробуем использовать ссылки:</p>
6 <p>А теперь попробуем использовать ссылки:</p>
7 <p>Запись =&amp; говорит, что переменная слева начинает указывать на те же данные, что и переменная в правой части выражения.</p>
7 <p>Запись =&amp; говорит, что переменная слева начинает указывать на те же данные, что и переменная в правой части выражения.</p>
8 <p>Здесь стоит сказать: если вы запомнили переменные как коробочки, которые содержат внутри себя данные, то это не совсем верная аналогия. На самом деле, данные хранятся отдельно, а переменные - отдельно. Поэтому правильно говорить, что переменные<strong>ссылаются</strong>на свои данные.</p>
8 <p>Здесь стоит сказать: если вы запомнили переменные как коробочки, которые содержат внутри себя данные, то это не совсем верная аналогия. На самом деле, данные хранятся отдельно, а переменные - отдельно. Поэтому правильно говорить, что переменные<strong>ссылаются</strong>на свои данные.</p>
9 <p>Рассмотрим первую ситуацию подробнее:</p>
9 <p>Рассмотрим первую ситуацию подробнее:</p>
10 <p>В этом коде переменная $a связывается с числом 5. Затем мы выполняем присвоение $b = $a. Несмотря на то, что справа стоит $a, правильно этот код воспринимать как $b = 5. Другими словами, вместо $a подставляется ее значение, которое становится значением $b.</p>
10 <p>В этом коде переменная $a связывается с числом 5. Затем мы выполняем присвоение $b = $a. Несмотря на то, что справа стоит $a, правильно этот код воспринимать как $b = 5. Другими словами, вместо $a подставляется ее значение, которое становится значением $b.</p>
11 <p>Эти переменные не имеют между собой ничего общего, они не ссылаются на одни и те же данные. Это может показаться странным, ведь и там, и там записано одно и то же. Но это не так - у каждой переменной своя собственная пятерка.</p>
11 <p>Эти переменные не имеют между собой ничего общего, они не ссылаются на одни и те же данные. Это может показаться странным, ведь и там, и там записано одно и то же. Но это не так - у каждой переменной своя собственная пятерка.</p>
12 <p>Но все меняется, если во время присвоения добавить амперсанд: $b =&amp; $a. Теперь $b и $a ссылаются на одно и то же значение. Если поменять его в $b, то оно поменяется и для $a. Обратное тоже верно. $a и $b здесь абсолютно эквивалентны, но это не означает, что $a указывает на $b, или наоборот. Это означает, что $a и $b указывают на одно и то же значение.</p>
12 <p>Но все меняется, если во время присвоения добавить амперсанд: $b =&amp; $a. Теперь $b и $a ссылаются на одно и то же значение. Если поменять его в $b, то оно поменяется и для $a. Обратное тоже верно. $a и $b здесь абсолютно эквивалентны, но это не означает, что $a указывает на $b, или наоборот. Это означает, что $a и $b указывают на одно и то же значение.</p>
13 <p>Вероятно, сейчас вы чувствуете легкое замешательство. Если это так - не переживайте, это нормально. Тема ссылок - вещь, которую сложно понять и прочувствовать, прочитав один урок.</p>
13 <p>Вероятно, сейчас вы чувствуете легкое замешательство. Если это так - не переживайте, это нормально. Тема ссылок - вещь, которую сложно понять и прочувствовать, прочитав один урок.</p>
14 <p>Есть три основных операции с использованием ссылок:</p>
14 <p>Есть три основных операции с использованием ссылок:</p>
15 <ul><li>Присвоение по ссылке</li>
15 <ul><li>Присвоение по ссылке</li>
16 <li>Передача по ссылке</li>
16 <li>Передача по ссылке</li>
17 <li>Возврат по ссылке</li>
17 <li>Возврат по ссылке</li>
18 </ul><p>Выше мы рассматривали довольно искусственные примеры. Практически единственное место, где ссылки встречаются в реальной жизни - аргументы функций, причем встроенные в сам язык. В основном это касается массивов, с которыми мы познакомимся позже. А пока посмотрим на этот прием без них:</p>
18 </ul><p>Выше мы рассматривали довольно искусственные примеры. Практически единственное место, где ссылки встречаются в реальной жизни - аргументы функций, причем встроенные в сам язык. В основном это касается массивов, с которыми мы познакомимся позже. А пока посмотрим на этот прием без них:</p>
19 <p>В этом примере сама функция декларирует, что ее аргумент передается по ссылке. Самое неприятное - вы об этом даже не узнаете, если внимательно не прочитаете документацию. Обычно такие функции ничего не возвращают, они меняют аргументы, что, кстати, считается плохой практикой. Подобное поведение имеет смысл только в некоторых ситуациях, где крайне важна производительность - например, при сортировке массивов.</p>
19 <p>В этом примере сама функция декларирует, что ее аргумент передается по ссылке. Самое неприятное - вы об этом даже не узнаете, если внимательно не прочитаете документацию. Обычно такие функции ничего не возвращают, они меняют аргументы, что, кстати, считается плохой практикой. Подобное поведение имеет смысл только в некоторых ситуациях, где крайне важна производительность - например, при сортировке массивов.</p>
20 <p>Особняком стоят объекты, которые всегда передаются по ссылке. Об этом рассказывается в следующих курсах.</p>
20 <p>Особняком стоят объекты, которые всегда передаются по ссылке. Об этом рассказывается в следующих курсах.</p>