Значения аргументов по умолчанию

В предыдущей статье было показано, как передавать данные в функцию че­рез ее аргументы. Например, следующая функция просто отображает передан­ную ей строку:

code: #php
function greeting($text) {
  echo $text, "\n";
}
 
greeting ("С добрым утром!");

Такую функцию можно по ошибке вызвать без указания аргумента:

code: #php
greeting();

В этом случае будет выведено сообщение об ошибке:

РНР Warning:    Missing argument 1 for greeting()  in
C:\php\test.php on line 5

Для того, чтобы избежать подобной ситуации, аргументу функции можно присвоить значение по умолчанию, которое будет использоваться, если при вы­зове аргумент не задан. Это достигается при помощи знака = и указания соответ­ствующего значения:

code: #php
<?php
function greeting($text = "Хорошая погода") {
  echo $text,   "\n";
}
 
greeting();
?>

Данный фрагмент кода отобразит следующий текст:

Хорошая погода

Если аргумент функции задан в явной форме, значение по умолчанию не ис­пользуется.

Значение по умолчанию может быть задано больше чем для одного аргумен­та, но после того, как оно будет задано для одного из них, оно должно быть зада­но и для всех последующих аргументов до конца списка, чтобы исключить неод­нозначность, если какой-либо из аргументов будет опущен. Ниже приведен пример подобной функции:

code: #php
function greeting($textl,  $text2 = "Без ",  $text = "паники.") {
   echo $textl,  $text2,  $text3,   "\n";
}

Пример демонстрирует использование значений аргументов функции по умолчанию. Пример предназначен для бронирования кают на круизном лайне­ре, по умолчанию бронируется двухместная каюта класса люкс.

code: #php
<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>

На рисунке видно, что явное задание аргумента функции перекрывает значе­ние по умолчанию.

результат выполнения примера
Книга: PHP в примерах. Купить книгу
Автор: Стивен Хольцнер. Переводчик: С. Банников
Поделиться:

Похожие статьи: