Поиск
Создание и вызов функций, принимающих аргументы
Хотя разработать такую простую функцию, как была описана в примере выше, весьма полезно, создать функцию, принимающую данные в виде параметров и соответствующим образом их обрабатывающую, еще лучше. То, что прини мает функция, называется аргументом. Количество аргументов, которые может принять функция, не ограничено. Мы уже обращали внимание на концепцию аргумента: функция 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заголовок. ?xHTMLxHEADxTITLE>The GreetUser Function:/TITLEx/HEADxBODY>
- Снова откройте 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)
.
<?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>
