Лекция 4. Алгоритмизация и программирование. Пользовательские функции в PHP
Функции PHP
Мы уже в наших занятий применяли многие встроенные функции, входящие в набор функций PHP, например и , и многие другие.
Мы познакомились с функциями подключения к базе данных mysql_connect(), функция отправки запроса mysql_query (), и так далее. Этих функций разного назначения в PHP очень много, они используются для решения различных задач. Их описание и примеры использования можно посмотреть на официальном сайте PHP по ссылке https://www.php.net/manual/ru/funcref.php
Это встроенные функции, но язык PHP предоставляет нам возможность создавать собственные функции.
Сейчас важно понять, что существуют два отдельных аспекта:
Создание функции PHP
Вызов функции PHP
Создание функции PHP
Собственную PHP-функцию создать очень просто. Предположим, вы хотите создать функцию PHP, которая просто выводит в браузере короткое сообщение, когда вы ее вызываете. В следующем примере мы создаем функцию writeMessage(), а затем вызывает ее сразу после создания.
Обратите внимание, что при создании функции ее имя должно начинаться с ключевого слова function, и весь код PHP должен быть помещен внутри скобок , как в приведенном ниже примере:
Этот код выводит следующий результат - Вы прекрасны! Хорошего дня!
Функции PHP с параметрами
PHP дает вам возможность передавать собственные параметры внутри функции. Вы можете передать столько параметров, сколько вам нужно. Эти параметры работают как переменные внутри функции. В следующем примере мы берем два целочисленных параметра и суммируем их, а затем выводим.
Этот код выводит следующий результат - Сумма двух чисел равна: 30
Передача аргументов по ссылке
В функции можно передавать аргументы по ссылке. Это означает, что ссылка на переменную управляется функцией, а не экземпляром значения переменной.
Любые изменения, внесенные в аргумент в этих случаях, изменяют значения исходной переменной. Вы можете передать аргумент по ссылке, добавив к имени переменной амперсанд либо в вызове функции, либо в определении функции. В следующем примере продемонстрированы оба случая.
Этот код отображает следующий результат -
Исходное значение равно 10
Исходное значение равно 16
Функции PHP, возвращающие значение
Функция может возвращать значение с помощью оператора return в сочетании со значением или объектом. Return останавливает выполнение функции и отправляет значение обратно вызывающему коду. Более одного значения вы можете вернуть из функции с использованием массива return (1,2,3,4).
В следующем примере мы принимаем два целочисленных параметра и суммируем их, а затем возвращаем сумму в вызывающую программу. Обратите внимание, что ключевое слово return используется для возврата значения из функции.
Этот код выводит следующий результат: Результат, возвращаемый функцией: 30
Установка для параметров функций значений по умолчанию
Вы можете установить для параметра значение по умолчанию, если вызывающий функцию объект не передает его. Следующая функция выводит NULL в случае, если в эту функцию не было передано ни одного значения.
Это код выводит следующий результат :
Это тест
Текст, заданный по умолчанию
Этот код выводит следующий результат: Привет!
Функции, определяемые пользователем
Для чего нужны функции? Чтобы ответить на этот вопрос, нужно понять, что вообще представляют собой функции. В программировании, как и в математике, функция есть отображение множества ее аргументов на множество ее значений. То есть функция для каждого набора значений аргумента возвращает какие-то значения, являющиеся результатом ее работы. Зачем нужны функции, попытаемся объяснить на примере. Классический пример функции в программировании – это функция, вычисляющая значение факториала числа. То есть мы задаем ей число, а она возвращает нам его факториал. При этом не нужно для каждого числа, факториал которого мы хотим получить, повторять один и тот же код – достаточно просто вызвать функцию с аргументом, равным этому числу.
Функция вычисления факториала натурального числа
function fact($n) { if ($n==0) return 1; else return $fact = $n * fact($n-1); } echo fact(3).'
'; // можно было бы написать echo (3*2); // но если число большое, echo fact(50).'
'; // то удобнее пользоваться функцией, // чем писать echo (50*49*48*...*3*2); echo fact(5).'
'; ?>
Обратите внимание, здесь функция рекурсивно вызывает сама себя, до тех пор, пока не выполнит все умножения.
Даже цикл не требуется.
Посмотрим, как в общем виде выглядит задание (объявление) функции. Функция может быть определена с помощью следующего синтаксиса:
Когда аргумент передается в функцию по значению, изменение значения аргумента внутри функции не влияет на его значение вне функции. Чтобы позволить функции изменять ее аргументы, их нужно передавать по ссылке. Для этого в определении функции перед именем аргумента следует написать знак амперсанд .
Рассмотрим ещё один пример передачи аргумента по ссылке и напишем функцию добавления элементу формы типа радио параметра
"; // выведет элемент формы – // не отмеченную радио кнопку add_label($str); // вызовем функцию echo $str .">
"; // это выведет уже отмеченную // радио кнопку