В предыдущих главах вы, вероятно, уже обратили внимание на используемые функции. Функции Date и print - это обычные общедоступные встроенные функции. Язык PHP предоставляет возможность объявления своих собственных функций.
Функции расширяют идею повторяющегося программного блока и позволяют произвольно выполнять программные блоки в любом месте сценария. Программный блок объявляется как функция, после чего у вас есть возможность вызывать функцию сколько угодно раз. При вызове функции ей можно передавать любое количество аргументов, а сама функция после отработки возвращает определенное значение.
4.1. Объявление функции
Объявление функции начинается с оператора function, за ним следует имя функции. Внутри скобок указывается список аргументов, разделенных запятыми. При этом аргументы можно не задавать. На рис. 4.1 показан формат объявления функции.
В других языках программирования, включая и более старые версии PHP, объявление функции должно предшествовать любому ее вызову. Однако в PHP 4 объявление функции можно разместить и после вызова данной функции. При вызове функции необходимо задать ее имя с последующими кавычками, даже если никаких аргументов передавать не надо.
Функции позволяют разместить программный код, который будет повторяться в создаваемой программе несколько раз. Это может быть вызвано нежеланием повторять один и тот же программный код в сценарии несколько раз или намерением сделать код более понятным и удобочитаемым. Обратимся к листингу 4.1. В нем сделано объявление функции printBold, которая печатает любой переданный ей текст жирным шрифтом.
I Листинг 4.1. Простейшая функция_
<?php
function printBold($text) {
print("<b>$text</b>");
}
print("3ia строка не печатается жирным шрифтом <br>n"); printBold("Эта строка печатается жирным шрифтом"); print("<br>n");
print("Этa строка не печатается жирным шрифтом <br>n");
?>
4.2. Оператор return
В определенном месте функция завершается, передавая управление оператору, вызвавшему ее. Это происходит, например, когда выполнение доходит до окончания блока функции. После этого выполнение вызвавшего кода продолжается с точки после места вызова функции. Другой способ остановки выполнения функции заключается в использовании оператора return.
Функция может содержать сколько угодно операторов return, хотя при этом необходимо принимать во внимание фактор удобочитаемости программного кода. Несколько операторов return может стать препятствием к пониманию выполнения алгоритма, заложенного в функции. В идеале функции должны иметь один вход и один выход. На практике существуют ситуации, при которых наличие нескольких операторов return вполне допустимо.
Если оператор return дополнить выражением, то возвратится значение, вычисляемое этим выражением. В листинге 4.2 продемонстрирована функция, которая принимает строку и возвращает ее обрамленную тегами жирного текста.
| Листинг 4.2. Пример функции с использованием команды return
<?php
function makeBold($text)
{
$text = "<b>$text</b>";
return($text);
}
print(" Эта строка не печатается жирным шрифтом <br>n"); print(makeBold(" Эта строка печатается жирным шрифтом") .
"<br>n");
print(" Эта строка не печатается жирным шрифтом <br>n");
?>
Для большинства типов данных возвращаемые значения передаются с переменными. Объекты, речь о которых пойдет в главе 6, "Классы и объекты", передаются ссылкой. Для того чтобы функция возвращала ссылку, перед ее именем необходимо указать символ &. В PHP 4 объекты передаются значениями, в которых замешаны некоторые специальные приемы возвращения объектов. В листинге 4.3 показана функция, возвращающая ссылку на массив. При каждом обращении к функции создается массив, в нем запоминается 10 чисел, и возвращается ссылка на этот массив.
Функция getRandArray создает новый массив после каждого вызова. Обычно после возвращения управления вызывающему процессу PHP уничтожает переменные, с которыми работала функция. В данном случае функция возвращает ссылку на массив. После завершения функции действие всех задействованных в ней ссылок аннулируется, и процессор PHP уменьшает на единицу количество ссылок на массив. Однако ссылкой на массив теперь является myNewArray, и массив можно продолжать использовать.
| Листинг 4.3. Функция, возвращающая ссылку
<?php
function &getRandArray()
{
$a = array(); for($i=0; $i<10;
{
$a[] = rand(1,100);
}
return($a);
}
$myNewArray = &getRandArray();
?>
ТОП-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. Функции. Часть Вторая. |