PHP: Функции (11) (конспект Hexlet)

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