- Создание функций в PHP
- Область видимости переменных
- Суперглобальные массивы
- Аргументы функции
- Необязательные параметры (параметры по умолчанию) функции
- Возвращение значения
- Как объявлять функцию php
- User Contributed Notes
- PHP функции
- Что такое функция:
- Создания функции в PHP:
- Параметры в функции:
- Возврат значения в функции:
- Глобальные и статические переменные:
- Глобальные переменные:
Создание функций в PHP
В PHP пользовательские функции создаются с помощью ключевого слова function , за которым следует имя функции, перечень её аргументов (количество которых может быть нулевым) и тело самой функции. Назначение функций очень широкое. Если вам приходится неоднократно выполнять какой-то один и тот же код, вам следует поместить его в свою функцию, и затем просто вызывать её там, где вам нужно. Имя функции должно начинаться с символа латинского алфавита, может содержать цифры и символ нижнего почеркивания. По принятому соглашению имена функций в PHP начинаются со строчных букв, а если в имени используетя не одно слово, то каждое новое начинается с заглавной буквы либо сразу, либо после символа нижнего подчеркивания.
/** * Объявляем простую пользовательскую функцию */ function userFunction()
Если в теле функции присутствует более одной инструкции, все инструкции должны быть помещены внутрь фигурных скобок <>. Если у функции есть только одна инструкция, фигурные скобки не обязательны. Но я рекомендую вам всегда их использовать.
В PHP есть стандартные функции, имена которых вам нельзя будет использовать в своих. Если вы захотите создать функцию с именем date() или time() , вы получите сообщение об ошибке, связанное с попыткой переопределения функции. В PHP функции можно объявлять только один раз. Переопределение функций запрещено. Обычно функции определяются в самом начале скрипта (чаще в отдельных файлах, подключаемых к основному сценарию) до начала основного сценария. Создадим функцию для вывода на экран IP-адреса пользователя.
/** * Функция вывода IP-адреса пользователя. * IP-адрес берется из суперглобального массива PHP $_SERVER * который содержит важные данные о соединении и сервере */ function userIP() < print "" . $_SERVER['REMOTE_ADDR'] . "
"; >
Функция определена. Для того, чтобы вызвать её, в сценарии в нужном месте достаточно указать имя функции и передать ей необходимые параметры (если это требуется).
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)
Теперь, если мы захотим подсчитать общее количество яблок, мы можем вызвать фукнцию как и в прошлый раз.
/** * Подсчитываем общее количество яблок * На этот раз функция 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 "Зеленых и красных всего - " . $total_green_red . "
"; // Выведет на экран Зеленых, красных и желтых всего - 30 print "Зеленых, красных и желтых всего - " . $total_green_red_yellow . "
"; // Выведет на экран Сумма значений - 53 print "Сумма значений - " . $all . "
";
Как объявлять функцию php
Приведём пример синтаксиса, используемого для описания функций:
Пример #1 Псевдокод для демонстрации использования функций
Внутри функции можно использовать любой корректный PHP-код, в том числе другие функции и даже объявления классов.
Имена функций следуют тем же правилам, что и другие метки в PHP. Корректное имя функции начинается с буквы или знака подчёркивания, за которым следует любое количество букв, цифр или знаков подчёркивания. В качестве регулярного выражения оно может быть выражено так: ^[a-zA-Z_\x80-\xff][a-zA-Z0-9_\x80-\xff]*$ .
Функции не обязаны быть определены до их использования, исключая тот случай, когда функции определяются условно, как это показано в двух последующих примерах.
В случае, когда функция определяется в зависимости от какого-либо условия, например, как это показано в двух приведённых ниже примерах, обработка описания функции должна предшествовать её вызову.
Пример #2 Функции, зависящие от условий
/* Мы не можем вызвать функцию foo() в этом месте,
поскольку она ещё не определена, но мы можем
обратиться к bar() */
if ( $makefoo ) function foo ()
echo «Я не существую до тех пор, пока выполнение программы меня не достигнет.\n» ;
>
>
/* Теперь мы благополучно можем вызывать foo(),
поскольку $makefoo была интерпретирована как true */
function bar ()
echo «Я существую сразу с начала старта программы.\n» ;
>
Пример #3 Вложенные функции
function foo ()
function bar ()
echo «Я не существую пока не будет вызвана foo().\n» ;
>
>
?php
/* Мы пока не можем обратиться к bar(),
поскольку она ещё не определена. */
/* Теперь мы можем вызвать функцию bar(),
обработка foo() сделала её доступной. */
Все функции и классы PHP имеют глобальную область видимости — они могут быть вызваны вне функции, даже если были определены внутри и наоборот.
PHP не поддерживает перегрузку функции, также отсутствует возможность переопределить или удалить объявленную ранее функцию.
Замечание: Имена функций регистронезависимы для символов ASCII от A до Z , тем не менее, предпочтительнее вызывать функции так, как они были объявлены.
Функции PHP поддерживают как списки аргументов переменной длины, так и значения аргументов по умолчанию. Смотрите также описания функций func_num_args() , func_get_arg() и func_get_args() для более детальной информации.
Можно вызывать функции PHP рекурсивно.
Пример #4 Рекурсивные функции
Замечание: Рекурсивный вызов методов/процедур с глубиной более 100-200 уровней рекурсии может вызвать переполнение стека и привести к аварийному завершению скрипта. В частности, бесконечная рекурсия будет считаться программной ошибкой.
User Contributed Notes
PHP функции
Это уже последняя часть учебника, про основы программирования на PHP, тут будет рассказываться про создания функции в PHP, и вообще как с ними работать, также затрону работу со статичными и глобальными переменными.
Что такое функция:
Для начала надо понять что такое функция вообще, если кратко говоря, то это просто кусок куда, который можно вызвать (запустить) в любой точке кода программы.
Это нужно для того, что бы не повторять постоянно код программы, потому что в программирования считается плохим тоном, повторять код, ну и на мой взгляд это ещё удобнее.
Создания функции в PHP:
В PHP объявление функции очень простое, вам просто надо написать слово function , после него название функции, круглы скобки, фигурные скобки и уже в них писать код.
Вызвать её тоже очень просто, пишем название функции и круглые скобки.
Как видите всё очень просто, вот что она выводит.
Также, если мы её визовым несколько раз, то получим несколько предложений «Hello World».
Как видите это достаточно удобно и просто.
Параметры в функции:
Также в PHP есть передача параметров в функции, это очень полезно, к примеру когда вам нужно сравнить два числа, вы просто передаёте эти числа в функцию и она уже сравнивает.
Также в качестве параметра можно передавать переменную, при чём, вообще без разницы какую, тут всё зависит от того, что вам нужно делать в функции, можно даже передавать массивы.
Возврат значения в функции:
Также функция может возвращать разные значения, это нужно, к примеру, если нам не надо, чтобы функция выводила на экран, какое значение больше, а только давала нам это значение, для дальнейшей работы с ним.
Для этого, внутри функции используется ключевое слово return .
Как видите всё работает, сначала сравниваем три и один, получается три больше чем один, число возвращается и присваивается переменной $a , точно также с переменной $b , после этого складываем эти две переменный и получается 13.
Ещё в PHP можно передать функцию как параметр, это иногда бывает полезно, что бы не создавать отдельную переменную.
Как видите всё просто, это пожалуй всё основное что нужно знать о функциях, единственное, примеры были достаточно однообразны.
Глобальные и статические переменные:
Это часть не очень сильно относится к функциям, но тем не менее её надо знать.
Глобальные переменные:
Для начала рассмотрим глобальные переменные, это переменные которые объявлены вне какой функции, то есть внутри функции их нет, их называют глобальными, а те которые объявлены внутри функции, называются локальными.
В том дела, что если вы в функции хотите использовать глобально переменную, то вы не сможете это так просто сделать.
Объявление глобальной переменной в PHP, очень простое, просто объявляете её вне функции, вот получить её будет тоже очень просто, для этого надо использовать ключевое слово global или массив $GLOBALS , рассмотрим оба эти варианта.