Создание и использование простых функций

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

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

function FunctionName () {
statement(s);

При именовании функции нужно руководствоваться теми же самыми пра
вилами, что и при присвоении имен переменным, за исключением использо
вдния знака доллара. При определении и вызове функций знак $ не нужен.
Имена функций должны быть значимыми, как и названия переменных (напри
мер, CreateHeader более подходящее имя функции, чем Functionl). Помни
те, что нельзя использовать пробел, так как в этом случае имя функции будет
состоять из дву5с слов, что приведет к ошибке (знак подчеркивания является
общепринятой заменой пробела: Create_Header правильное имя функции).

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

При написании функции желательно придерживаться тех же правил фор
матирования, что использовались на протяжении всей книги, хотя это и Не
требуется синтаксисом. Главное, чтобы все необходимые элементы были на
месте. К ним относятся: слово function, имя функции, открывающая и закры
вающая круглые скобки, открывающая и закрывающая фигурные скобки и по
следовательность инструкций.

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

Функция, создаваемая вами, вызывается с помощью обращения к ней, как
и любая встроенная функция. Строка кода FunctionName ( ) ; инициирует вы
полнение включенных в эту функцию инструкций.

Обратимся к генерирующему пароли сценарию (глава 5) и перепишем его
с использованием функции.

Создание и вызов базовой функции

  1. Откройте файл passwords.php в текстовом редакторе (листинг 9.1).
    Листинг 9.1 т Это исходный сценарий для создания паролей, в котором не
    используются функции. Создадим первую функцию с помощью кода, составля
    ющего основу данной страницы.

  2. 1 <HTML> '
    2 <HEAD>
    3 <TITLE>Password Generator</TITLEx/HEAD>
    4 <BODY>
    5 <?php
    6 $String = "This is the text which will be encrypted so that we may
    create random and secure passwords!";
    7 $Lerigth = 8; // Измените это значение, чтобы установить длину пароля.
    32 символа максимум.
    8 $String = md5($String);
    9 $StringLength = strlen($String);
    10 srand ((double) microtimeO * 1000000);
    11 $Begin = rand(0,($StringLength$Lengthl)); // Pick an arbitrary
    starting point.
    12 $Password = substr($String, $Begin, $Length);
    13 print ("Your recommended password is:<PxBIG>$Password</BIG>n");
    14 ?> . •
    15 </BODY>
    16 </HTML>

  3. Поменяйте стандартный HTMLзаголовок на тэг <?php.
    Мы должны определить функцию до того, как она будет вызвана (это требу
    ется в РНР 3.x), поэтому напишем функцию в самом начале сценария, до
    HTMLкода.
  4. function CreatePassword () {
    Назовем функцию CreatePassword. Имя соответствует назначению функ
    ции и легко запоминается.
  5. Теперь поместим PHPкод (строки 613) из сценария passwords.php в функ
    цию. Чтобы было видно, что эти строки принадлежат функции, я бы ре
    комендовал разместить их с отступом от строки с именем функции (лис
    тинг 9.2).
  6. $String = "This is the text which will be encrypted so
    —that we may create random and secure passwords!";
    $Length = 8 ; / / Измените это значение, чтобы установить длину пароля.
    —32 символа максимум.
    $String = md5($String);
    $StringLength = strlen($String);
    srand ((double) microtimeO * 1000000);
    $Begin = rand(0,($StringLength$Lengthl)); // Pick an
    —Получение произвольной точки старта".
    $Password = substr($String, $Begin, $Length);
    print ("Your recommended password is:
    —<PxBIG>$Password</BIGxP> n") ;

  7. Закройте функцию на следующей строке фигурной скобкой (}).
    Пропуск открывающей или закрывающей скобки распространенная при
    чина ошибок, поэтому тщательно соблюдайте правила синтаксиса.
  8. Закройте PHPкод тэгом ?>.
    Мы закрываем PHPраздел страницы, так как собираемся писать HTMLкод.
    При желании можно оставить раздел РНР открытым и послать код в браузер
    с помощью функции print ( ) . В таком случае пропустите этот пункт.
  9. Напишите стандартный HTMLзаголовок.
  10. <HTMLxHEADxTITLE>Password Generator within a Function</TITLEx/HEAD>
    <BODY>

  11. Откройте новый PHPраздел страницы тэгом <?php.
    В HTMLдокумент можно вставлять несколько разделов PHPкода, это впол
    не обычная практика.
  12. CreatePasswordO ;
    Если функция уже определена и вы хотите ее использовать, просто вызови
    те ее по имени (будьте внимательны и не ошибитесь в написании). Не забывай
    те про скобки.
  13. ></BODYx/HTML>
    Закройте второй PHPраздел и НТМЬтэги.
  14. Сохраните сценарий, загрузите его на сервер (листинг 9.2) и протестируй
    те в браузере (рис. 9.1). ч
  15. Листинг 9.2 т Размещение функции’ в самом начале сценария хороший
    способ выделить ее. Подобным образом размещение инструкций функции с от
    ступом помогает установить их принадлежность к функции. Затем одна строка
    кода в основном теле сценария выполняет многочисленные инструкции.


    1 <?php
    2 function CreatеРавsword () {
    3 $String = "This is the text which will be encrypted so that we may
    create random and secure passwords!";
    4 $Length =8; // Измените это значение, чтобы установить длину
    пароля. 32 символа максимум.
    5 $String = md5($String);
    6 $StringLength = strlen($String);
    7 srand ((double) microtimeO * 1000000);
    8 $Begin • rand(0,($StringLength$Lengthl)); // Pick an arbitrary
    starting point.
    9 $Password = substr($String, $Begin, $Length) /•
    10 print ("Your recommended password is: <P><BIG>$Password</BIGxP>
    n") ;
    11 } // Конец функции CreatePassword.
    12 ?>
    13 <HTML>
    14 <HEAD>
    15 <TITLE>Password Generator within a Function</TITLEx/HEAD>
    16 <BODY> •
    17' <?php
    18 CreatePasswordO; У/ Вызов функции.
    19 ?>
    20 </BODY>
    21 </HTML>

    Если на вашем сервере установлен PHP 3.x, сначала необходимо определить функ
    цию, и только после этого вызывать ее. Несмотря на то что в РНР 4.0 это ограни
    чение снято, лучше располагать функции в самом начале сценария. Это гаранти
    рует создание функции до ее вызова.

    Имена создаваемых вами функций, так же как и имена встроенных функций РНР,
    не чувствительны к регистру. Поэтому не имеет никакого значения, напишете ли
    вы createpassword или CreatePassword.

Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: