Значения аргументов по умолчанию
В предыдущей статье было показано, как передавать данные в функцию через ее аргументы. Например, следующая функция просто отображает переданную ей строку:
function greeting($text) { echo $text, "\n"; } greeting ("С добрым утром!");
Такую функцию можно по ошибке вызвать без указания аргумента:
greeting();
В этом случае будет выведено сообщение об ошибке:
РНР Warning: Missing argument 1 for greeting() in C:\php\test.php on line 5
Для того, чтобы избежать подобной ситуации, аргументу функции можно присвоить значение по умолчанию, которое будет использоваться, если при вызове аргумент не задан. Это достигается при помощи знака = и указания соответствующего значения:
<?php function greeting($text = "Хорошая погода") { echo $text, "\n"; } greeting(); ?>
Данный фрагмент кода отобразит следующий текст:
Хорошая погода
Если аргумент функции задан в явной форме, значение по умолчанию не используется.
Значение по умолчанию может быть задано больше чем для одного аргумента, но после того, как оно будет задано для одного из них, оно должно быть задано и для всех последующих аргументов до конца списка, чтобы исключить неоднозначность, если какой-либо из аргументов будет опущен. Ниже приведен пример подобной функции:
function greeting($textl, $text2 = "Без ", $text = "паники.") { echo $textl, $text2, $text3, "\n"; }
Пример демонстрирует использование значений аргументов функции по умолчанию. Пример предназначен для бронирования кают на круизном лайнере, по умолчанию бронируется двухместная каюта класса люкс.
<HTML> <HEAD> <TITLE>Значения по умолчанию</TITLE> </HEAD> <BODY> <H1>Значения по умолчанию</H1> <H2>Добро пожаловать в круиз!</H2> <?php function book($name, $number = 2, $deluxe = TRUE) { echo "Добро пожаловать, $name, вам зарезервировано $number»." мест"; if ($deluxe) echo " в каюте класса люкс.<ВК>"; else echo " в стандартной каюте.<BR>"; } book("Иван"); book("Петр", 1); book("Мария", 4, FALSE); ?> </BODY> </HTML>
На рисунке видно, что явное задание аргумента функции перекрывает значение по умолчанию.
Автор: Стивен Хольцнер. Переводчик: С. Банников