Создание функций в PHP
Объявление пользовательских функций для их вызова и применения в ваших PHP-сценариях
В PHP пользовательские функции создаются с помощью ключевого слова function, за которым следует имя функции, перечень её аргументов (количество которых может быть нулевым) и тело самой функции. Назначение функций очень широкое. Если вам приходится неоднократно выполнять какой-то один и тот же код, вам следует поместить его в свою функцию, и затем просто вызывать её там, где вам нужно. Имя функции должно начинаться с символа латинского алфавита, может содержать цифры и символ нижнего подчеркивания. По принятому соглашению имена функций в PHP начинаются со строчных букв, а если в имени используется не одно слово, то каждое новое начинается с заглавной буквы либо сразу, либо после символа нижнего подчеркивания.
/**
* Объявляем простую пользовательскую функцию
*/
function userFunction() {
}
Если в теле функции присутствует более одной инструкции, все инструкции должны быть помещены внутрь фигурных скобок {}. Если у функции есть только одна инструкция, фигурные скобки не обязательны. Но я рекомендую вам всегда их использовать.
В PHPесть стандартные функции, имена которых вам нельзя будет использовать в своих. Если вы захотите создать функцию с именем date()или time(), вы получите сообщение об ошибке, связанное с попыткой переопределения функции. В PHP функции можно объявлять только один раз. Переопределение функций запрещено. Обычно функции определяются в самом начале скрипта (чаще в отдельных файлах, подключаемых к основному сценарию) до начала основного сценария. Создадим функцию для вывода на экран IP-адреса пользователя.
Несмотря на то, что статья была опубликована 26 июля 2013 года, она всё ещё остаётся самой популярной и просматриваемой среди остальных на сайте 0_О.
Ребята, ну вы чё?
/**
* Функция вывода IP-адреса пользователя.
* IP-адрес берется из суперглобального массива PHP $_SERVER
* который содержит важные данные о соединении и сервере
*/
function userIP() {
print "<p>" . $_SERVER['REMOTE_ADDR'] . "</p>";
}
Функция определена. Для того, чтобы вызвать её, в сценарии в нужном месте достаточно указать имя функции и передать ей необходимые параметры (если это требуется).
userIP(); // Выведет на экран IP-адрес пользователя вида 127.0.0.1
Область видимости переменных
При работе с функциями следует изучить понятие области видимости переменных. Заключается оно в том, в каких местах сценария какие из объявленных переменных могут быть использованы. Переменные, которые были объявлены внутри функции, являются локальными переменными. Внутри тела функции к ним обращаться можно, а за пределами функции к ним уже обратиться не получится. И наоборот, переменные, объявленные вне тела функции, не доступны в самой функции. Но существуют данные, которые доступны в любом месте сценария.
Суперглобальные массивы
$_SERVER,$_SESSION,$_COOKIEи другие — это суперглобальные массивы. Их данные доступны в любом месте сценария. Вот лишь несколько из них:
- $_SERVER['REMOTE_ADDR']— IP-адрес пользователя;
- $_SERVER['SERVER_NAME']— имя сервера;
- $_SERVER['DOCUMENT_ROOT']— корневой каталог сайта;
- $_SERVER['REQUEST_URI']— запрошенный адрес документа.
Аргументы функции
Если функция должна иметь доступ к данным переменной или константы, объявленных вне её тела, эти данные ей можно передавать в виде аргументов. Каждая функция может принимать любое количество аргументов (параметров), в том числе и нулевое. В приведенном примере мы не передавали функции никакие аргументы. Рассмотрим другой пример.
/**
* Объявляем пользовательскую функцию для суммирования двух произвольных значений
*/
function amount($value_1, $value_2) { // Функция должна принять 2 обязательных аргумента
print $value_1 + $value_2; // И вывести на экран сумму этих аргументов
}
$green_apples = 10; // У нас есть 10 зеленых яблок
$red_apples = 4; // И еще есть 4 красных яблока
// Общее количество яблок мы можем узнать с помощью вызова функции amount()
// Функция amount() должна принять два аргумента, которыми будут являться количества яблок
amount($green_apples, $red_apples); // Выведет на экран 14
Необязательные параметры (параметры по умолчанию) функции
У функции может иметься неограниченное количество аргументов (параметров), среди которых могут быть необязательные (в том числе и все). Для того, чтобы сделать аргумент функции необязательным, ему нужно присвоить значение по умолчанию при объявлении функции.
/**
* Объявляем функцию со значениями по умолчанию
*/
function amount($value_1, $value_2, $value_3 = 0) {
print $value_1 + $value_2 + $value_3;
}
Теперь, если мы захотим подсчитать общее количество яблок, мы можем вызвать фукнцию как и в прошлый раз.
/**
* Подсчитываем общее количество яблок
* На этот раз функция amount() принимает три аргумента,
* но третий является необязательным, так как его значение
* было определено при объявлении функции, если мы третий
* аргумент не укажем, он останется равным нулю
*/
$geen_apples = 11;
$red_apples = 7;
amount($green_apples, $red_apples); // Выведет на экран 18
// Находим у себя в кладовой, внезапно, ещё 10 желтых яблок
$yellow_apples = 10;
// И их тоже нужно учесть
amount($green_apples, $red_apples, $yellow_apples); // Выведет на экран 28
Обратите внимание на то, что мы дважды вызвали одну и ту же функцию в пределах одного сценария. Это можно делать сколь угодно много раз. При работе с функциями помните об одной немаловажной детали — если среди аргументов функции присутствуют необъявленные по умолчанию и объявленные, сначала должны быть указаны те, которые являются необъявленными (обязательными).
function userF($v1, $v2 = 100, $v3) { // К хорошему не приведет
print $v1 + $v2 + $v3;
}
Возвращение значения
Одной из главный особенностей функций является их способность возвращать результат. Не всегда в сценарии необходимо что-то делать с результатом работы функции. Чаще его нужно просто сохранить и использовать в другом месте сценария совсем для других целей[?] собственно, для вывода некоего значения на экран функции вообще практически никогда не используются.. Для того, чтобы функция вернула значение в то место сценария, из которого она была вызвана, необходимо воспользоваться операторомreturn. Любой код, который следует за оператором return, не выполняется (если оператор return сработал как надо).
/**
* Объявляем пользовательскую функцию для суммирования яблок
* одно из значений является заданным по умолчанию.
* Функция просто суммирует значения аргументов, и возвращает
* их сценарию, не выводя на экран.
*/
function amount($value_1, $value_2, $value_3 = 0) {
$result = $value_1 + $value_2 + $value_3; // Просто складываем значения аргументов функции
return $result; // Возвращаем результат сценарию. Переменная $result является локальной
// и конкретно её значение не будет доступно вне тела функции
}
$green_apples = 9; // у нас есть 9 зеленых яблок
$red_apples = 14; // И еще 14 красных яблок
// Всего у нас...
$total_green_red = amount($green_apples, $red_apples); // Оператор return функции amount() вернет значение 23,
// которое присвоится переменной $total_green_red
// Нам принесли еще 7 желтых яблок
$yellow_apples = 7;
// И теперь у нас...
$total_green_red_yellow = amount($green_apples, $red_apples, $yellow_apples); // Вернет значение 30 и запишет его в переменную
// $total_green_red_yellow
$all = amount($total_green_red, $total_green_red_yellow); // Вернет значение 53
// Выведет на экран Зеленых и красных всего - 23
print "<p>Зеленых и красных всего - " . $total_green_red . "</p>";
// Выведет на экран Зеленых, красных и желтых всего - 30
print "<p>Зеленых, красных и желтых всего - " . $total_green_red_yellow . "</p>";
// Выведет на экран Сумма значений - 53
print "<p>Сумма значений - " . $all . "</p>";
- Я опубликовал эту статью:26.07.2013
- 23 417