Лекція № 12 Тема: Передача параметрів функції План Передача значень Передача змінних по посиланню Передача значень При оголошенні функції потрібно вказати список параметрів, які можуть передаватися функції, наприклад: function func ($a, $b, $c) { ... }; При виклику функції func () потрібно обов'язково вказати всі три параметри, оскільки вони є обов'язковими. У РНР функції можуть володіти необов'язковими параметрами або параметрами за умовчанням — про них ми поговоримо трохи пізніше. Передача змінних по посиланню Згідно традиції, у всіх мовах програмування є два види аргументів функцій: параметри-значення; параметри-змінні. Функція не може змінити параметр-значення, тобто він доступний функції «тільки для читання» — вона може його використовувати, але не більш. Як параметр-значення необов'язково указувати змінну, можна вказати саме значення, звідси назва — параметр-значення, наприклад: function func($a) ( echo "Параметр = $a\n"; } $b = 3; func(3); func($b); Дана функція виведе рядок «Параметр = 3» двічі. На відміну від параметрів-значень, параметри-змінні можуть бути змінені в процесі роботи функції. Тут вже не можна передавати значення, потрібно обов'язково передати змінну. У всіх мовах програмування способи оголошень параметрів-значень і параметрів-змінних відрізнялися друга від друга. Мова РНР не стала виключенням. У мові РНР, на відміну від С немає покажчиків, тому для оголошення параметрів-змінних використовується механізм передачі змінній по посиланню. Лістинг. Передача змінній по посиланню <? SFirst = $Second = 5; function f1($f, &Ss) { echo "Змінний параметрьАп"; $f = '7; $s = 10; echo "First = $f, Second * Ss\n"; 1 echo "Значення змінних до виклику функции\п"; echo "First = SFirst Second = SSecond\n"; fl($First, $Second); echo "First = $First Second = $Second\n"; ?>
Мал. 8.1. Виведення програми Спочатку змінні $First і $Second рівні 5. Потім ми в тілі функції змінюємо обидва параметри — звичайний і переданий по посиланню. Як показує мал. 8.1, усередині функції параметри були змінені, а ось в основній програмі відобразилася зміна другої змінної-параметра $s, переданого по посиланню — &.