Пользовательские функции в PHP
Каждый язык программирования имеет подпрограммы. Речь идёт о специально оформленных фрагментах кода, к которым можно обращаться из любого места внутри программы. В PHP — это пользовательские функции.
Кроме встроенных PHP-функций, нередко возникает необходимость создать пользовательские функции, выполняющие определённые задачи.
Какими особенностями обладают пользовательские функции в PHP?
В PHP выделяют следующие особенности пользовательских функций: — доступность параметров по умолчанию. Вы можете вызывать одну и ту же функцию в PHP с переменным числом параметров; — область видимости переменных внутри пользовательской функции является древовидной (иерархической); — пользовательские функции способны возвращать любой тип; — присутствует возможность менять переменные, которые переданы в качестве аргумента.
В языке PHP у разработчика есть достаточно много свободы при создании пользовательских функций. При этом, как уже было сказано, в пользовательских PHP-функциях доступны параметры по умолчанию, в отличие от того же C++.
Недостатки пользовательских функций PHP
У пользовательских функций в PHP есть и ряд минусов: 1.Нельзя объявить локальные функции. Сделать это так, как в других языках программирования, не получится. Вы попросту не сможете создать функцию внутри другой функции, чтобы 1-я вложенная функция была видна лишь во 2-ой функции. В языке программирования PHP такая вложенная функция станет доступна полностью всей программе (скрипту), то есть попросту не будет локальной.
Давайте объясним это на примере:
<?php function first_function() { echo "<h4>1-я пользовательская функция</h4>"; function second_function() { echo "<h5>2-я пользовательская функция</h5>"; } } first_function(); second_function(); ?>
В данном примере мы получим следующий вывод:
1-я пользовательская функция 2-я пользовательская функция
Это значит, что программе доступны обе функции. Таким образом, 2-я функция локальной не является.
2.Следующий минус пользовательских PHP-функций связан с областью видимости функций. Но прежде давайте поясним, какие переменные у нас глобальные, а какие локальные.
К глобальным относят переменные, доступные всей программе, включая подпрограммы. К локальным — переменные, определённые внутри функции (подпрограммы). То есть они доступны лишь внутри функции, в которой определены.
Для языка PHP все переменные, которые объявлены и используются в функции, по умолчанию локальны для функции. Таким образом, у вас отсутствует возможность по умолчанию изменить значение глобальной переменной в теле функции.
Когда вы будете в теле пользовательской функции использовать переменную с именем, которое идентично имени глобальной переменной (находится вне пользовательской функции), то эта локальный переменная не будет иметь ни малейшего отношения к глобальной переменной. В такой ситуации в пользовательской функции создаётся локальная переменная с именем, которое идентично имени глобальной переменной, причем доступна эта локальная переменная будет лишь внутри данной пользовательской функции.
Вот как это выглядит на практике:
<?php $a = 100; function funct() { $a = 70; echo "<h4>$a</h4>"; } funct(); echo "<h2>$a</h2>"; ?>
Сценарий выведет сначала 70, а потом 100:
70 100
Чтобы избавиться от вышеописанного недостатка, в PHP есть специальная инструкция global — она позволяет работать с глобальными переменными пользовательской функции.
Создаём пользовательскую функцию в PHP
Пользовательскую функцию можно объявить в любой части скрипта непосредственно до места её 1-го использования. И не надо никакого предварительного объявления, как это принято в прочих языках программирования, в том же «Си».
У такого подхода есть свои плюсы. Когда транслятор дойдёт до определения пользовательской функции, он проверит корректность определения, а потом выполнит трансляцию определения функции во внутреннее представление, однако сам код транслировать не будет. И это верно, ведь зачем транслировать код, который, может, не будет использован.
Рассмотрим синтаксис объявления пользовательских функций в PHP:
function Имя (аргумент1[=значение1],...,аргумент1[=значение1]) { тело_функции }
Начинается объявление функции служебным словом function, потом идёт имя функции, далее — список аргументов в скобках. Что касается тела функции, то оно помещается в фигурные скобки и может содержать практически любое число операторов.
К именам функций в PHP предъявляется ряд требований:
— они могут включать русские буквы, однако это не рекомендуется;
— нельзя, чтобы имена функции содержали пробелы;
— важно, чтобы имя каждой функции было уникальным (здесь надо помнить, что регистр во время объявления функции не учитывается, равно как и при обращении к ней). Таким образом, функции
Что касается типов значений, возвращаемых функциями, то они могут быть любыми.
Чтобы передать результат работы функций в основной скрипт, применяют конструкцию return. Когда функция не возвращает ничего, конструкция return не указывается. При этом конструкция return способна возвращать всё, включая массивы.
Рассмотрим пример использования пользовательской функции:
<?php function funct() { $number = 777; return $number; } $a = funct(); echo $a; ?>
Здесь функция
Хотите знать больше? Записывайтесь на курс "Backend-разработчик на PHP"!