Хотя разработать такую простую функцию, как была описана в примере выше,
весьма полезно, создать функцию, принимающую данные в виде параметров
и соответствующим образом их обрабатывающую, еще лучше. То, что прини
мает функция, называется аргументом. Количество аргументов, которые может
принять функция, не ограничено. Мы уже обращали внимание на концепцию
аргумента: функция print () принимает строку как аргумент, а затем посылает
ее в браузер.
Синтаксис написанияфункции, принимающей аргументы, выглядит следу
ющим образом:
function FunctionName ($Argumentl, $Argument2 и т.д.)
statement(s);
}
Аргументы представлены в форме переменных, которым присваивается
значение, посылаемое в функцию, когда ее вызывают. Функции, принимающие
аргументы, вызываются так же, как и функции без аргументов. Однако необхо
димо помнить, что требуется передать соответствующее количество аргумен
тов. Это можно сделать либо с помощью передачи переменных:
FunctionName ($Variablel, $Variable2 и т . д ) ;
либо поместив значения в кавычки:
FunctionName ("Valuel", "Value2" и т . д ) ;
А вот и еще один из возможных вариантов:
FunctionName ($Variablel, "Value2" и т.д);
Обратите внимание на следующее: аргументы передаются строго в порядке
поступления, то есть первое значение в функции равно первому значению
в строке вызова, второе второму и т.д. Имена аргументов функции и переда
ваемых в нее параметров никак не связаны.
Это справедливо и для случаев, когда значение не было передано вовсе.
В таких случаях считается, что значение не определено, и используется специ
альное значение null. Это не математический нуль, который сам по себе явля
ется значением, а именно неопределенное значение. То же самое происходит,
если функция принимает четыре аргумента, а передано только три четвер
тый аргумент будет не определен.
Чтобы показать работу функций, принимающих аргументы, обратимся
к странице hello.php (глава 6). Поместим код приветствия в простую функцию,
которая принимает аргумент, имя пользователя.
Выполнение действия
- Откройте файл hello.php в текстовом редакторе (листинг 9.3).
Листинг 9.3 т Существующая страница hello.php создает привязанное ко
времени суток приветствие. - Начните с открывающего PHPтэга <?php, затем возьмите строки 716 из
исходного сценария (листинг 9.3) и поместите их в функцию в самом на
чале программы. - Закройте PHPраздел и создайте HTMLзаголовок.
- Снова откройте PHPраздел и поместите туда условную конструкцию i felse,
а также вызов новой функции. - Закройте РНР и HTML.
- Сохраните сценарий (листинг 9.4), загрузите его на сервер и протестируй
те в браузере (рис. 9.2). Не забудьте отправить в сценарий значение име
ни пользователя, добавив его к адресу URL или через HTMLформу. В про
тивном случае вы получите результат, подобный тому, что представлен на
рис. 9.3.
1 <HTML>
2 <HEAD>
3 <TITLE>Ifelseif Conditionals</TITLEx/HEAD>
4 <BODY> '
5 <?php
6 if ($Username) {
7 print ("Good ");
8 if (date("A") == "AM") {
9 print ("morning, ") ;
10 } elseif ( ( dateC'H") >= 12 ) and ( date("H") < 18 ) ) {
11 print ("afternoon, ");
12 } else {
13 print ("evening, ");
14 } // Закрытие if даты.
15 print ("$Username");
16 print ("!n");
17 } else {
18 print ("Please log in.n");
19 } // Закрытие if имени пользователя. •
20 ?>
21 </BODY>
22 </HTML>
function GreetUser ($TheUser) {
print ("Good " ) ;
if (date("A") == "AM") {
print ("morning, ");
} elseif ((date("H")>12) and (date("H")<18)) {
print ("morning, ") ; •
} else {
print ("evening, ");
} // Закрытие if даты,
print ("$TheUser");
print ( " ! n " ) ;
} // Конец функции GreetUser.
Мы только дали функции имя. Сама же она состоит из кода, используемого
ранее. Переменная $TheUser будет получать значение $Username, посылаемое
в функцию при ее вызове (см. строку 21 листинга 9.4)
.
?xHTMLxHEADxTITLE>The GreetUser Function:/TITLEx/HEADxBODY>
<?php
if ($Username) {
GreetUser ($Username); // Вызов функции.
} else {
print ("Please log i n . n " ) ;
} // Закрытие if имени пользователя.,
Условная конструкция if ($Username) используется здесь для того, чтобы
функция вызывалась, только если существует, переменная $Username.
?></BODYx/HTML>
Листинг 9.4 т Здесь показана функция, которая принимает аргумент, пере
даваемый в нее при вызове. Функция вызывается, только если переменная
$Username имеет значение.
1 <?php
2 function GreetUser ($TheUser) {
3 print ("Good ");
4 i'f (date("A") == "AM") {
5 print ("morning, ") ,
6 } elseif ((date("H")>12) and (datef"H")<18)) {
7 print ("morning, ");
8 } else {
9 print ("evening, ");
10 } // Закрытие if даты.
11 print ("$TheUser");
12 print ("!n");
13 } // Конец функции GreetUser.
14 ?>
15 <HTML>
16 <HEAD> '
17 <TITLE>The GreetUser Function</TITLEx/HEAD>
18 <BODY> ' • .
19 <?php
20 if ($Username) {
21 . GreetOeer ($Useniame); // Вызов функции.
22 } else {
23 print ("Please log in.n");
24 } // Закрытие if имени пользователя.
25 ?>
26 </BODY>
27 </HTML>
В главе 13 говорится о том, как помещать определенную информацию во внешние
файлы (их можно будет использовать в нескольких сценариях). Часто внешний
файл самое удачное место для хранения функций, таких как GreetUser. В таком
случае они доступны из любого раздела сайта.
Если вы посылаете число в функцию как аргумент, оно необязательно должно быть
заключено в кавычки, как строка. С другой стороны, не повредит использовать
кавычки для передачи аргументов.