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

Как я уже говорил ранее - без лишней воды, сразу приступим к уроку.  В конце поста будет приложено более подробное видео для тех кому комфортнее воспринимать информацию без текста т.к. писатель из меня так себе.


Порядок урока:

1. Ставим задачу.

2. Реализуем задачу.

3. Реализуем задачу через функцию.

4. Масштабируем функцию.

5. Дорабатываем функцию.

6. Обсуждаем функции.


Постановка задачи:

Возьмем переменные с числовыми значениями (три) и вернем среднее арифметическое в еще одну переменную, затем выведем эту информацию.


Реализация задачи:

Создаем переменные

Пользовательские функции в PHP Урок, Разработка, PHP, Видео, Длиннопост

Вычисляем и возвращаем значение в новую переменную

Пользовательские функции в PHP Урок, Разработка, PHP, Видео, Длиннопост

Следом выведем её значение

Пользовательские функции в PHP Урок, Разработка, PHP, Видео, Длиннопост

Короткий и простой код, решающий задачу. Но при необходимости автоматизировать этот процесс мы столкнемся с проблемой - увеличение кода. Чем больше мы будем использовать подобные вычисления тем большим будет объем кода. Для решения подобных проблем существуют функции. С их помощью мы можем автоматизировать типичные задачи.


Создание функции:

Создать функцию просто, используем следующую конструкцию:

Пользовательские функции в PHP Урок, Разработка, PHP, Видео, Длиннопост

Создадим функцию, которая производит ту же операцию, но уже используя аргументы. Ниже я объясню, что это такое.

Пользовательские функции в PHP Урок, Разработка, PHP, Видео, Длиннопост

Мы создали функцию, которая принимает в себя три аргумента, с которыми мы будем производить действия в дальнейшем, но уже внутри функции. Все переменные и действия внутри функции - происходят строго внутри функции и за возврат отвечает return $z; без него из функции мы ничего назад не получим. Как итог мы можем использовать функцию для вычислений, передавая ей нужные нам аргументы и возвращая нужное значение в еще одну переменную.

Пользовательские функции в PHP Урок, Разработка, PHP, Видео, Длиннопост

Мы выполнили поставленную задачу с помощью функции. Результат уже достигнут. Но наша функция сильно ограничена и годится для решения посредственных задач с ограниченным функционалом. Давайте приступим к следующему шагу. Масштабируем нашу функцию:


Масштабирование функции

Исправим функцию так, чтобы мы могли вычислять среднее арифметическое у неограниченного количества значений. В этом нам поможет аргумент в виде массива со значениями, который мы и будем передавать т.к. кол-во аргументов лимитировано, а мы не хотим лимитов.
Пользовательские функции в PHP Урок, Разработка, PHP, Видео, Длиннопост

Как итог наша функция теперь может выполнять конкретные задачи более гибко. Посмотрим как ей пользоваться

Пользовательские функции в PHP Урок, Разработка, PHP, Видео, Длиннопост

Помимо прочего, есть ряд нюансов.

1. Если при создании функции мы указали два аргумента, а передаем один аргумент  - получим ошибку.

2. Лишние аргументы не учитываются и код продолжает работать.

3. В функциях php предусмотрены аргументы со значениями по умолчанию.


Доработка функции:

Пр Доработаем функцию таким образом, чтобы мы могли передавать в нее массив либо массив и значение, а так же просто значение и два значения без массива. Функция будет выполнять различные операции исходя из аргументов.

-Передавая массив мы получим среднее арифметическое значений.

-Передавая массив и значение мы получим среднее арифметическое значений плюс значение.

-Передавая одно значение мы его назад и получим.

-Передавая два значения - мы получим их сумму.

Для этих целей мы будем использовать аргументы со значением по умолчанию.

Пользовательские функции в PHP Урок, Разработка, PHP, Видео, Длиннопост

Теперь у нас есть различные варианты использования функций.

Пользовательские функции в PHP Урок, Разработка, PHP, Видео, Длиннопост

Кол-во аргументов и вариантов действий для функции может быть очень много, все зависит от Вашей фантазии, но в целом принято использовать функции под конкретные задачи и не нагружать их излишним функционалом.


Обсуждаем функции (подводим итог):

Функция это запланированный алгоритм, она может принимать в себя аргументы. Аргументы являются обязательными, но можно использовать для них значения по умолчанию, тогда аргумент перестает быть обязательным. Все что происходит внутри функции, происходит только в ней и доступа без возврата нет, кроме случаев с использованием глобальных переменных, но лучше лишний раз их не использовать. Имена переменных внутри функции и внешние переменные могут иметь одинаковые имена и при этом они все равно будут разными ячейками. Функция доступна в любом месте кода, необязательно создавать её выше вычислений. По итогу функции, это все. Как бонус из видео добавлю функцию вывода массива на экран без возврата в из функции.

Пользовательские функции в PHP Урок, Разработка, PHP, Видео, Длиннопост

Эта функция ничего не возвращает, но позволяет более удобно просматривать массивы. Результат её выполнения ниже.

Пользовательские функции в PHP Урок, Разработка, PHP, Видео, Длиннопост

Ниже Вы найдете видео, где подробно в режиме реального времени мы делаем тоже самое, но с комментариями по ходу создания.

Родительский пост - ссылка


P/s

Буду благодарен за комментарии по существу. Спасибо за внимание.