- •Лекція Основи програмування на php Що таке php
- •Інструментарій Мінімальна програма
- •Синтаксис
- •Основний синтаксис
- •Поділ інструкцій
- •Коментарі
- •Змінні, константи й оператори
- •Типи даних
- •Тип float (числа з плаваючою крапкою)
- •Тип string (рядки)
- •Одинарні лапки
- •Подвійні лапки
- •Тип array (масив)
- •Прості масиви та списки в php
- •Прості одномірні масиви:
- •Прості багатовимірні масиви:
- •Асоціативні масиви в php
- •Багатовимірні асоціативні масиви:6
- •Керуючі конструкції
- •Оператор else
- •Оператор elseif
- •Оператор switch
- •Оператори передачі управління
- •Оператори включення
- •Альтернативний синтаксис
- •Функції користувача
- •Аргументи функцій
- •Списки аргументів змінної довжини
- •Використання змінних всередині функції
- •Статичні змінні
- •Значення, що повертаються
- •Повернення посилання
- •Змінні функції
- •Символічні і жорсткі посилання
- •Жорсткі посилання в php
- •Символічні посилання (змінні на змінні)
- •Жорсткі посилання і призначені для функцій користувача Передача значень за посиланням
- •Повернення значень за посиланням
- •Видалення посилань (скидання посилань)
Жорсткі посилання в php
Жорстке посилання представляє собою просто змінну, яка є синонімом іншої змінної. Багаторівневі посилання (тобто, посилання на посилання змінної, як це можна робити, наприклад, у Perl) не підтримуються. Так що не варто сприймати жорсткі посилання серйозніше, ніж синоніми.
Щоб створити жорстке посилання, потрібно використовувати оператор & (амперсанд). Наприклад:
$a = 10;
$b = & $a; // тепер $b - те ж саме, що і $a
$b = 0; // насправді $a = 0
echo "b = $b, a = $a"; / / Виводить: "b = 0, a = 0"
Посилатися можна не тільки на змінні, але й на елементи масиву (цим жорсткі посилання вигідно відрізняються від символічних). Наприклад:
$a = array ('a' => 'aaa', 'b' => 'bbb');
$b = & $a ['b']; // тепер $b - те ж, що й елемент з індексом 'b' масиву
$b = 0; / / насправді $a ['b'] = 0;
echo $a ['b']; // Виводить 0
Втім, елемент масиву, для якого планується створити символічне посилання, може і не існувати. Як у наступному випадку:
$a = array ('a' => 'aaa', 'b' => 'bbb');
$b = & $a ['c']; // тепер $b - те ж, що й елемент з індексом 'c' масиву
echo "Елемент з індексом 'c': (". $a ['c'].")";
В результаті виконання розглянутого скрипта, хоча посиланням $b і не було нічого присвоєно, в масиві $a створиться новий елемент з ключем c і значенням - порожній рядком (ми можемо це визначити за результатом роботи echo). Тобто, жорстке посилання на самому ділі не може посилатися на неіснуючий об'єкт, а якщо робиться така спроба, то об'єкт створюється.
Примітка: Якщо прибрати рядок, в якій створюється жорстке посилання, то буде виведено повідомлення про те, що елемент з ключем c не визначено в масиві $а.
Жорсткі посилання зручно застосовувати при передачі параметрів для функції користувача і повернення значення з неї.
Символічні посилання (змінні на змінні)
Символічне посилання - це всього лише рядкова змінна, що зберігає ім'я іншої змінної. Щоб дістатися до значення змінної, на яку посилається символічне посилання, необхідно застосувати додатковий знак $ перед ім'ям посилання. Розглянемо приклад:
$A = 10;
$B = 20;
$C = 30;
$P = "А"; / / або $Р = "В" або $Р = "С" (присвоюємо $p ім'я іншої змінної)
echo $$Р; // виводить змінну, на яку посилається $Р, тобто $А
$$P = 100; / / присвоює $А значення 100
Ми бачимо, що для того, щоб використовувати звичайну рядкову змінну як посилання, потрібно перед нею поставити ще один символ $. Це говорить інтерпретатору, що треба взяти не значення самої $Р, а значення змінної, ім'я якої зберігається у змінній $Р.
Символічні посилання (змінні на змінні) використовуються досить рідко.
Жорсткі посилання і призначені для функцій користувача Передача значень за посиланням
Ви можете передавати змінні в функцію користувача по посиланню, якщо ви хочете дозволити функції модифікувати свої аргументи. У такому випадку, функція користувача зможе змінювати аргументи. Синтаксис такий:
<? Php
function foo (& $var)
{
$var + +;
}
$a = 5;
foo ($a);
// $a тут дорівнює 6
?>
Зауважте, що у виклику функції відсутній знак посилання - він є тільки у визначенні функції. Цього достатньо для коректної передачі аргументів за посиланням.
Ще один цікавий приклад:
<? Php
function funct (& $string)
{
$string .= 'а ця всередині.';
}
$str = 'Цей рядок за межами функції,';
funct ($str);
echo $ str; // Виведе 'Цей рядок за межами функції, а ця всередині.'
?>
За посиланням можна передавати:
Змінні, наприклад foo ($ a)
Оператор new, наприклад foo (new foobar ())
Лінки, які повертаються функцією, наприклад:
<? Php
function & bar ()
{
$a = 5;
return $a;
}
foo (bar ());
?>
Будь-яке інше вираження не повинно передаватися по посиланню, так як результат не визначений. Наприклад, наступна передача за посиланням є неправильною:
<? Php
function bar () // Операція & відсутня
{
$a = 5;
return $a;
}
foo (bar ());
foo ($a = 5); // Вираз, а не змінна
foo (5); // Константа, а не змінна
?>
