Поиск

Создание и вызов функций, принимающих аргументы

Хотя разработать такую простую функцию, как была описана в примере выше, весьма полезно, создать функцию, принимающую данные в виде параметров и соответствующим образом их обрабатывающую, еще лучше. То, что прини мает функция, называется аргументом. Количество аргументов, которые может принять функция, не ограничено. Мы уже обращали внимание на концепцию аргумента: функция print () принимает строку как аргумент, а затем посылает ее в браузер.

Синтаксис написанияфункции, принимающей аргументы, выглядит следу ющим образом:

function FunctionName ($Argumentl, $Argument2 и т.д.)
statement(s);
}

Аргументы представлены в форме переменных, которым присваивается значение, посылаемое в функцию, когда ее вызывают. Функции, принимающие аргументы, вызываются так же, как и функции без аргументов. Однако необхо димо помнить, что требуется передать соответствующее количество аргумен тов. Это можно сделать либо с помощью передачи переменных:

FunctionName ($Variablel, $Variable2 и т . д ) ;

либо поместив значения в кавычки:

FunctionName ("Valuel", "Value2" и т . д ) ;

А вот и еще один из возможных вариантов:

FunctionName ($Variablel, "Value2" и т.д);

Обратите внимание на следующее: аргументы передаются строго в порядке поступления, то есть первое значение в функции равно первому значению в строке вызова, второе второму и т.д. Имена аргументов функции и переда ваемых в нее параметров никак не связаны.

Это справедливо и для случаев, когда значение не было передано вовсе. В таких случаях считается, что значение не определено, и используется специ альное значение null. Это не математический нуль, который сам по себе явля ется значением, а именно неопределенное значение. То же самое происходит, если функция принимает четыре аргумента, а передано только три четвер тый аргумент будет не определен.

Чтобы показать работу функций, принимающих аргументы, обратимся к странице hello.php (глава 6). Поместим код приветствия в простую функцию, которая принимает аргумент, имя пользователя.

Выполнение действия

  1. Откройте файл hello.php в текстовом редакторе (листинг 9.3). Листинг 9.3 т Существующая страница hello.php создает привязанное ко времени суток приветствие.
  2. 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>
  3. Начните с открывающего PHPтэга <?php, затем возьмите строки 716 из исходного сценария (листинг 9.3) и поместите их в функцию в самом на чале программы.
  4. 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)

    .
  5. Закройте PHPраздел и создайте HTMLзаголовок.
  6. ?xHTMLxHEADxTITLE>The GreetUser Function:/TITLEx/HEADxBODY>
  7. Снова откройте PHPраздел и поместите туда условную конструкцию i felse, а также вызов новой функции.
  8. <?php
    if ($Username) {
    GreetUser ($Username); // Вызов функции.
    } else {
    print ("Please log i n . \ n " ) ;
    } // Закрытие if имени пользователя.,

    Условная конструкция if ($Username) используется здесь для того, чтобы функция вызывалась, только если существует, переменная $Username.

  9. Закройте РНР и HTML.
  10. ?></BODYx/HTML>
  11. Сохраните сценарий (листинг 9.4), загрузите его на сервер и протестируй те в браузере (рис. 9.2). Не забудьте отправить в сценарий значение име ни пользователя, добавив его к адресу URL или через HTMLформу. В про тивном случае вы получите результат, подобный тому, что представлен на рис. 9.3.
  12. Листинг 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. В таком случае они доступны из любого раздела сайта.
    Если вы посылаете число в функцию как аргумент, оно необязательно должно быть заключено в кавычки, как строка. С другой стороны, не повредит использовать кавычки для передачи аргументов.