PHP :: Функции
Что такое функция?
В PHP имеется около двух тысяч готовых к использованию встроенных функций, однако их описанию будет посвящена отдельная часть учебника. Теперь же мы рассмотрим лишь общие вопросы, касающиеся самого понятия функции и ее синтаксиса, а также правил использования функций. Что же такое функция?
Функция в PHP – это блок программного кода на языке PHP, который определяется один раз и далее может быть использован многократно.
Создание функции в PHP
Рассмотрим создание функции на примере №1.
<?php //Присвоили первой переменной значение $n_1=5; //Присвоили второй переменной значение $n_2=10; //Объявили функцию с 2 аргументами function my_func($arg_1, $arg_2) { //Находим сумму переданных аргументов $sum = $arg_1+$arg_2; //Значение возвращаемое функцией при ее вызове return $sum; } //Вызываем функцию и выводим ее значение, т.е. 15 echo my_func($n_1,$n_2); /* Условно объявление функции и ее вызов можно представить так */ /* function my_func($arg_1, $arg_2, ..., $arg_n){ 'исполняемый код' return 'возвращаемое значение'; } my_func($arg_1, $arg_2, ...); */ ?>
Пример №1. Создание функций в PHP
Таким образом, чтобы объявить функцию, необходимо использовать ключевое слово function, затем указать имя функции, после чего в круглых скобках перечислить принимаемые аргументы, и при помощи фигурных скобок сформировать тело функции.
Имена функций в PHP
Имена функций в PHP являются регистронезависимыми (в отличие от имен переменных), но следуют тем же правилам, что и другие идентификаторы, т.е. корректное имя функции должно начинаться с буквы или знака подчеркивания, за которым может следовать любое количество букв, цифр или знаков подчеркивания. Об аргументах мы поговорим чуть ниже, а что касается тела функции, то в нем можно использовать любой корректный php-код, включая другие функции и объявления классов. При этом, если оператор return отсутствует, то функция не имеет возвращаемого значения. Она просто выполняет указанный кусок программного кода.
Особенности функций в PHP
Следует отметить, что в PHP объявления функций поднимаются в начало кода скрипта, поэтому их разрешается использовать еще до момента определения за исключением случаев, когда функции объявляются условно или внутри других функций и, как следствие, должны быть определены до момента их вызова (см. пример №2).
<?php //Присвоили первой переменной значение $n_1=5; //Присвоили второй переменной значение $n_2=10; //Выведет ошибку, т.к. функция определяется условно //и вызывается до ее объявления //echo my_func($n_1,$n_2); if($n_1<=$n_2){ //Объявили функцию внутри условного оператора function my_func($arg_1,$arg_2) { //Находим сумму переданных аргументов $sum = $arg_1+$arg_2; //Значение возвращаемое функцией при ее вызове return $sum; } } //Выведет 15, т.к. условие истинно и функция была определена echo my_func($n_1,$n_2).'<br>'; /* В случае, если бы условие оператора if (например, при $arg_1>$arg_2) не выполнилось, то и последний вызов функции также вызвал бы ошибку, поскольку функция не была бы определена */ //Объявили внешнюю функцию function func_out(){ //Объявили функцию внутри другой функции function my_func_2($arg_1, $arg_2){ //Находим произведение переданных аргументов $mult = $arg_1*$arg_2; //Значение возвращаемое функцией при ее вызове return $mult; } } //Выведет ошибку, т.к. функция вызывается до вызова //внешней функции, когда она еще не была определена //echo my_func_2($n_1,$n_2); //Вызвали внешнюю функцию, теперь определена и вложенная функция func_out(); //Выведет 50 echo my_func_2($n_1,$n_2); ?>
Пример №2. Условное объявление функций
Добавим, что:
- все функции и классы PHP имеют глобальную область видимости, т.е. они могут быть вызваны вне функции, даже если были определены внутри и наоборот;
- PHP не поддерживает перегрузку функций;
- в PHP отсутствует возможность переопределить или удалить объявленную ранее функцию;
- также в PHP допустимы рекурсивные вызовы функций (см. пример №3).
<?php //Определяем рекурсивную функцию function recursion($a){ if($a<20){ echo "$a"; //Вызываем саму функцию recursion($a+1); } } //Выведет 12345678910111213141516171819 recursion(1); ?>
Пример №3. Использование рекурсивных функций
Следует избегать вызовов рекурсивных функций и методов с более чем 100-200 уровней рекурсии, т. к. это может привести к сбою в работе выполняемого скрипта.
Быстрый переход к другим страницам
- Операторы break, continue и goto в PHP
- Понятие функции и ее синтаксис
- Аргументы функции в PHP
- Вернуться к оглавлению учебника