Що роблять посилання
Є три основні операції з використанням посилань: присвоєння за посиланням передача за посиланням і повернення за посиланням. Цей розділ познайомить вас із цими операціями та надасть посилання для подальшого вивчення.
Присвоєння за посиланням
Перша з них - посилання PHP дозволяють створити дві змінні, що вказують на те саме значення. Таким чином, коли виконується таке:
Loading...
то $a вказує на те саме значення як і $b.
Зауваження :
$a та $b тут абсолютно еквівалентні, але це не означає, що $a вказує на $b або навпаки. Це означає, що $a і $b вказують на те саме значення.
Зауваження :
При присвоєнні, передачі чи поверненні неініціалізованої змінної за посиланням, відбувається її створення.
Приклад #1 Використання посилань з неініціалізованими змінними
Loading...
Такий самий синтаксис може використовуватися у функціях, що повертають посилання, та з оператором new
:
Loading...
Використання того ж синтаксису з функцією, яка не повертає за посиланням, призведе до помилки, як і її використання з результатом оператора new. Хоча об'єкти передаються як покажчики, це не те саме, що посилання, як описано в розділі Об'єкти та посилання
Увага
Якщо змінної, оголошеної всередині функції як global
, буде присвоєно посилання, воно буде видно лише у функції. Щоб уникнути цього, використовуйте масив $GLOBALS
Приклад #2 Надання посилань глобальним змінним всередині функції
Loading...
Думайте оglobal $var;
як про скорочення від $var =& $GLOBALS['var'];
Таким образом, присвоение$var
інший посилання впливає лише локальну змінну.
Зауваження :
При використанні змінної-посилання в foreach, Змінюється зміст, на яке вона посилається.
Приклад #3 Посилання та foreach
Loading...
Хоча у виразах, створюваних за допомогою конструкції array()
, немає явного присвоєння за посиланням, проте вони можуть поводитися як такі, якщо вказати префікс &
для елементів масиву Приклад:
Loading...
Проте слід зазначити, що посилання в масивах потенційно небезпечні. При звичайному (не за посиланням) присвоєння масиву посилання всередині цього масиву зберігаються. Це також стосується і викликів функцій, коли масив передається за значенням. Приклад:
Loading...
Інакше кажучи, поведінка окремих елементів масиву залежить від типу присвоєння цього масиву.
Передача за посиланням
Друге, що роблять посилання – передача параметрів за посиланням. При цьому локальна змінна в функції і змінна в області видимості, що викликає, посилаються на один і той же вміст. Приклад:
Loading...
Цей код надасть $a значення 6. Це відбувається, тому що у функції foo змінна $var посилається на той же вміст, що й змінна $a. Дивіться також детальне пояснення передачі за посиланням
Повернення за посиланням
Третє, що можуть робити посилання – це повернення за посиланням