Пользовательские функции в PHP | OTUS
Время ограничено!
Дополнительные скидки – только до 27 января. Торопитесь! Подробности в чате.
Подробнее

Курсы

Специализации Курсы в разработке Подготовительные курсы
+7 499 110-61-65

Пользовательские функции в PHP

Каждый язык программирования имеет подпрограммы. Речь идёт о специально оформленных фрагментах кода, к которым можно обращаться из любого места внутри программы. В 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 предъявляется ряд требований: — они могут включать русские буквы, однако это не рекомендуется; — нельзя, чтобы имена функции содержали пробелы; — важно, чтобы имя каждой функции было уникальным (здесь надо помнить, что регистр во время объявления функции не учитывается, равно как и при обращении к ней). Таким образом, функции FUNCT() и funct() обладают одинаковыми именами; — функции могут иметь те же имена, как и у переменных, но без знака $ в начале.

Что касается типов значений, возвращаемых функциями, то они могут быть любыми.

Чтобы передать результат работы функций в основной скрипт, применяют конструкцию return. Когда функция не возвращает ничего, конструкция return не указывается. При этом конструкция return способна возвращать всё, включая массивы.

Рассмотрим пример использования пользовательской функции:

<?php

function funct() {
$number = 777;
 return $number;
}
$a = funct();
echo $a;

?>

Здесь функция funct возвращает посредством return число 777. Возвращённое значение присваивается глобальной переменной $a, после чего оператор echo выводит в браузер значение переменной $a. В итоге мы видим в браузере число 777.

Хотите знать больше? Записывайтесь на курс "Backend-разработчик на PHP"!

Не пропустите новые полезные статьи!

Спасибо за подписку!

Мы отправили вам письмо для подтверждения вашего email.
С уважением, OTUS!

Автор
0 комментариев
Для комментирования необходимо авторизоваться