Пользовательские функции в PHP
Как я уже говорил ранее - без лишней воды, сразу приступим к уроку. В конце поста будет приложено более подробное видео для тех кому комфортнее воспринимать информацию без текста т.к. писатель из меня так себе.
Порядок урока:
1. Ставим задачу.
2. Реализуем задачу.
3. Реализуем задачу через функцию.
4. Масштабируем функцию.
5. Дорабатываем функцию.
6. Обсуждаем функции.
Постановка задачи:
Возьмем переменные с числовыми значениями (три) и вернем среднее арифметическое в еще одну переменную, затем выведем эту информацию.
Реализация задачи:
Создаем переменные
Вычисляем и возвращаем значение в новую переменную
Следом выведем её значение
Короткий и простой код, решающий задачу. Но при необходимости автоматизировать этот процесс мы столкнемся с проблемой - увеличение кода. Чем больше мы будем использовать подобные вычисления тем большим будет объем кода. Для решения подобных проблем существуют функции. С их помощью мы можем автоматизировать типичные задачи.
Создание функции:
Создать функцию просто, используем следующую конструкцию:
Создадим функцию, которая производит ту же операцию, но уже используя аргументы. Ниже я объясню, что это такое.
Мы создали функцию, которая принимает в себя три аргумента, с которыми мы будем производить действия в дальнейшем, но уже внутри функции. Все переменные и действия внутри функции - происходят строго внутри функции и за возврат отвечает return $z; без него из функции мы ничего назад не получим. Как итог мы можем использовать функцию для вычислений, передавая ей нужные нам аргументы и возвращая нужное значение в еще одну переменную.
Мы выполнили поставленную задачу с помощью функции. Результат уже достигнут. Но наша функция сильно ограничена и годится для решения посредственных задач с ограниченным функционалом. Давайте приступим к следующему шагу. Масштабируем нашу функцию:
Масштабирование функции
Исправим функцию так, чтобы мы могли вычислять среднее арифметическое у неограниченного количества значений. В этом нам поможет аргумент в виде массива со значениями, который мы и будем передавать т.к. кол-во аргументов лимитировано, а мы не хотим лимитов.Как итог наша функция теперь может выполнять конкретные задачи более гибко. Посмотрим как ей пользоваться
Помимо прочего, есть ряд нюансов.
1. Если при создании функции мы указали два аргумента, а передаем один аргумент - получим ошибку.
2. Лишние аргументы не учитываются и код продолжает работать.
3. В функциях php предусмотрены аргументы со значениями по умолчанию.
Доработка функции:
Пр Доработаем функцию таким образом, чтобы мы могли передавать в нее массив либо массив и значение, а так же просто значение и два значения без массива. Функция будет выполнять различные операции исходя из аргументов.
-Передавая массив мы получим среднее арифметическое значений.
-Передавая массив и значение мы получим среднее арифметическое значений плюс значение.
-Передавая одно значение мы его назад и получим.
-Передавая два значения - мы получим их сумму.
Для этих целей мы будем использовать аргументы со значением по умолчанию.
Теперь у нас есть различные варианты использования функций.
Кол-во аргументов и вариантов действий для функции может быть очень много, все зависит от Вашей фантазии, но в целом принято использовать функции под конкретные задачи и не нагружать их излишним функционалом.
Обсуждаем функции (подводим итог):
Функция это запланированный алгоритм, она может принимать в себя аргументы. Аргументы являются обязательными, но можно использовать для них значения по умолчанию, тогда аргумент перестает быть обязательным. Все что происходит внутри функции, происходит только в ней и доступа без возврата нет, кроме случаев с использованием глобальных переменных, но лучше лишний раз их не использовать. Имена переменных внутри функции и внешние переменные могут иметь одинаковые имена и при этом они все равно будут разными ячейками. Функция доступна в любом месте кода, необязательно создавать её выше вычислений. По итогу функции, это все. Как бонус из видео добавлю функцию вывода массива на экран без возврата в из функции.
Эта функция ничего не возвращает, но позволяет более удобно просматривать массивы. Результат её выполнения ниже.
Ниже Вы найдете видео, где подробно в режиме реального времени мы делаем тоже самое, но с комментариями по ходу создания.