Язык программирования PHP | страница 44




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


>

>function Message($sign="Оргкомитет."){

>// здесь параметр sign имеет по умолчанию значение "Оргкомитет"

> echo "Следующее собрание состоится завтра.
";

> echo "$sign
";

>}

>Message();

> // вызываем функцию без параметра.

> // В этом случае подпись – это Оргкомитет

>Message("С уважением, Вася");

> // В этом случае подпись

> // будет "С уважением, Вася."

>?>


Результатом работы этого скрипта будет:


>Следующее собрание состоится завтра.

>Оргкомитет.

>Следующее собрание состоится завтра.

>С уважением, Вася.


Если у функции несколько параметров, то те аргументы, для которых задаются значения по умолчанию, должны быть записаны после всех остальных аргументов в определении функции. В противном случае появится ошибка, если эти аргументы будут опущены при вызове функции.


Например, мы хотим внести описание статьи в каталог. Пользователь должен ввести такие характеристики статьи, как ее название, автор и краткое описание. Если пользователь не вводит имя автора статьи, считаем, что это Иванов Иван.


>

>function Add_article($title, $description,

> $author="Иванов Иван"){

> echo "Заносим в каталог статью: $title,";

> echo "автор $author";

> echo "
Краткое описание: ";

> echo "$description


";

>}

>Add_article("Информатика и мы",

> "Это статья про информатику ...",

> "Петров Петр");

>Add_article("Кто такие хакеры",

> "Это статья про хакеров ...");

>?>


В результате работы скрипта получим следующее


>Заносим в каталог статью: Информатика и мы,

> автор Петров Петр.

>Краткое описание:

> Это статья про информатику...

>Заносим в каталог статью: Кто такие хакеры,

> автор Иванов Иван.

>Краткое описание:

> Это статья про хакеров...


Если же мы напишем вот так:


>

>function Add_article($author="Иванов Иван",

> $title, $description){

>// ...действия как в предыдущем примере

>}

>Add_article("Кто такие хакеры",

> "Это статья про хакеров...");

>?>


То в результате получим:


>Warning: Missing argument 3 for

> add_article() in

>c:\users\nina\tasks\func\def_bad.php

> on line 2


Списки аргументов переменной длины


В PHP4 можно создавать функции с переменным числом аргументов. То есть мы создаем функцию, не зная заранее, со сколькими аргументами ее вызовут. Для написания такой функции никакого специального синтаксиса не требуется. Все делается с помощью встроенных функций func_num_args(), func_get_arg(), func_get_args().