Это же делается в функциях пользователя. Для присвоения значения по умолчанию сразу же после аргумента используется оператор =. Правая часть этого оператора представляет собой присваиваемое литеральное значение (листинг 4.8). Так как аргументы проверяются слева направо, значение по умолчанию необходимо задавать каждому аргументу, начиная с первого аргумента.
Листинг 4.8. Аргументы со значениями по умолчанию
<?php
function printColor($text,
$color="black", &$count=NULL)
{
//Напечатать текст в соответствии со стилем print("<span style="color: $color">" .
"$text</span>");
//При наличии счетчика инкрементировать его if(isset($count))
{
$count++;
}
}
// Вызов с одним аргументом printColor(" Это черный текст"); print("<br>n");
// Пренебречь цветом, принятым по умолчанию
printColor(" Это голубой текст", "blue");
print("<br>n");
// Передать ссылку на счетчик
$c = 0;
printColor(" Это красный текст", "red", $c); print("<br>n");
printColor(" Это зеленый текст", "green", $c);
print("<br>n");
print(" Счетчик $c<br>");
?>
Значение по умолчанию можно присвоить и необязательному аргументу. Аналогичный синтаксис можно использовать и для любого другого необязательного аргумента. При вызове функции без этого аргумента изменение этого значения не будет иметь никакого влияния вне функции. Однако если установить значение по умолчанию равным NULL, то можно легко убедиться в том, что он присутствует в вызове и может использоваться только в этом случае. Любой аргумент может быть сброшен по умолчанию, если ему присваивается значение NULL.
Кроме задания имен аргументов, доступ к ним можно также получить по их смещению. Для этого обычно используются функции func_get_arg, func_get_args и func_num_args (они описываются в главе 8, "Браузер ввода-вывода"). Программист может выбрать один аргумент с помощью функции func_get_arg или выбрать все аргументы одновременно с помощью функции func_get_args. Для того чтобы определить, сколько аргументов было передано, необходимо воспользоваться функцией func_num_args. Но здесь возникает одна сложность. Вызов функции с количеством аргументов, отличных от аргументов прототипа, не будет ошибкой, если функция не была задумана таким образом преднамеренно.
Почему же все-таки не возникает никакого желания использовать эти функции, а не объявлять их явным образом. Предположим, что с помощью функции, задающей количество аргументов, был создан целый список. Сначала необходимо разместить эти числа в массиве, который, в свою очередь, будет выбирать значения из массива. В то же время вместо такой сложной конфигурации можно задать функцию, которая будет принимать переменное число аргументов (листинг 4.9).
I Листинг 4.9. Функции с переменным числом аргументов_
<?php
function makeList()
{
print("<ol>n");
for($i=0; $i < func_num_args(); $i++)
{
print("<li>" . func_get_arg($i) . "</li>n");
}
print("</ol>n");
}
makeList("Linux", "Apache", "MySQL", "PHP");
?>
ТОП-10 популярных
Для работы с вещественными числами в MySQL предусмотрено три типа данных - это типы FLOAT, DOUBLE, DECIMAL. Числовой тип FLOAT...
БОЛЬШЕ БОЛЬШИХ LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Больше больших LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
НОУТБУК с блестящим экраном
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...
Иди и пиши. TravelMate C100
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...
Магнито-оптический дисковод DynaMO
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...
Компьютер для гурманов.«Эксимер ДМ»
Российская компания «Эксимер ДМ», известная как производитель настольных компьютеров, рабочих станций, серверов и ноутбуков, выступила техническим спонсором проведения торжеств, посвященных...
Российская компания «Эксимер ДМ», известная как производитель настольных компьютеров, рабочих станций, серверов и ноутбуков, выступила техническим спонсором проведения торжеств, посвященных...
Для длинных строк, т.е. строк длиннее 255 символов, в MySQL предусмотрены типы BLOB (Binary Large Object, большой двоичный объект) и...
В дополнение к календарным типам, предназначенным для хранения даты и времени отдельно, MySQL также поддерживает гибридные типы данных DATETIME и...
Вообще, к изменению настроек сервера прибегают очень редко. В MySQL программа заранее настроена так, чтобы соответствовать самым распространенным и основным...
PHP. Функции. Часть Четвёртая.
28-12-2009
<< Предыдущая статья | Следующая статья >> |
PHP. Функции. Часть Третья. | PHP. Функции. Часть Пятая. |