Перейти к содержимому
- Основные понятия курса:
- Детерминированность
- Побочные эффекты
- Splat operator
- Объекты первого рода
- Функции высшего порядка (map/filter/reduce)
- Функциональное программирование
- Чистые функции
- Детерминированные функции – для одних и тех же входных данных они всегда выдают один и тот же результат (противоположные примеры – rand(), date())
- Дополнительные материалы
- Побочные эффекты
- Детерминированная функция
- Разделение команд и запросов
- CQS – Command-query Separation
- Функция является либо командой (action), либо запросом (query), но не тем и другим одновременно.
- Дополнительные материалы
- Command-query Separation
- Принцип наименьшего удивления
- Упаковка аргументов
- Splat Operator – function sum(…$numbers)
- сумма элементов массива: array_sum($numbers)
- Распаковка аргументов
- Получить все значения массива с переиндексированной нумерацией: array_values ( array
$array
) : array
- Полезные функции для работы с коллекциями
- Объектные
- Collect
- Stringy
- Carbon
- Просто функции
- Funct
- Bottomline
- Слаг — часть адреса сайта, которая используется для идентификации ресурса в Человекопонятном виде. Без слага /posts/3, со слагом /posts/my-super-post
- Объекты первого класса
- Объекты первого класса – элементы, которые могут быть переданы в функции, возвращены из функций и присвоены переменным
- Анонимные функции
- Функции высшего порядка
- Оператор <=> (spaceship) возвращает 1, -1 или 0 в зависимости от того, как соотносятся его операнды
- Функции высшего порядка — это функции, которые либо принимают, либо возвращают другие функции (callback-функции), либо делают все сразу
- PHP The Right Way
- Отображение (map)
- array_map – по существующему набору данных (или наборам данных) формирует новый набор данных по заданному алгоритму, реализованному в передаваемой callback-функции – array_map ( callable $callback , array $array1 [, array $… ] ) : array
- Фильтрация (filter)
- array_filter – array_filter ( array $array [, callable $callback [, int $flag = 0 ]] ) : array
- array_filter сохраняет индексы исходного набора данных. Для сброса индексов можн оиспользвоать функцию array_values
- Агрегация (reduce)
- array_reduce – array_reduce ( array $array , callable $callback [, mixed $initial = NULL ] ) : mixed
- Сигналы
- Обработка сигналов
- Продуманная оптимизация
- Полезные функции высшего порядка (библиотека funct)
- partition($collection, callable $callback) – разбивает массив на 2 массива: в первый – удовлетворяющие функции callback, во второй – не удовлетворяющие
- every($collection, callable $callback = null) – возвращает true, если все элементы коллекции удовлетворяют условию функции callback. По умолчанию проверяет на истинность (== true)
- groupBy($collection, callable $callback) – группирует элементы коллекции в множества на основании ключа, полученного в результате вызова функции callback
- minValue($collection, callable $callback) – возвращает минимальный элемент коллекции
- Замыкание
- Использование внешних переменных внутри анонимной функции c помощью инструкции use: function () use ($param)
- Парадигмы программирования
- Императивная парадигма — стиль написания кода в виде набора последовательных инструкций (команд) с активным использованием переменных (“как достичь нужного результата”)
- Декларативная парадигма(или функциональная) -” то мы хотим получить “
- ” отсутствие присваивания “
- ” невозможно использование циклов ” – вместо них рекурсия или использование функций первого рода
- Другие парадигмы
- Логическое программирование
- Автоматное программирование
- Объектно-ориентированное программирование
- Метапрограммирование
- Дополнительные материалы
- Парадигмы
- Функциональное программирование в PHP
- Абстракция с помощью функций
- Теорию Категорий
- Абстракции почти всегда текут