Содержание курса

Продвинутый курс по PHP

Ровно год назад я прочитал лекции по php. Я мечтал о продолжении и долго думал о формате, как лучше сделать уклон на практику. За этот год накопилось несколько проектов/задач, которые хотелось бы сделать, но у меня нет на это времени. При этом на них можно попробовать или отработать определенные навыки. Я хочу взять 2-3 команды по 1-2 человека, и сделать задачи с модерированием разработки, акцентированием внимания на выбранный уклон.

В общем, очередная авантюра на месяц-два: ).

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

В каждом проекте можно уделить внимание всем видам тестирования: bdd (behat), tdd (phpspec), unit tests (phpunit) или попробовать полный стек codeception.

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

Технологии

BDD - Behaviour Driven Development, представлен в php Behat. У большинства, если и есть опыт работы, то больше относительно веб. Но это не совсем корректное представление, на самом деле его использует при разработке всего, в том числе и библиотек, консольных команд.

TDD - Test Driven Development, представлен в php PhpSpec. Это о разработке через спецификацию. Вы пишите спецификацию, генерируете по ней готовый шаблон для кода. Реализуете его, запускаете спецификацию и она проходит, если код возвращает ожидаемый результат.

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

Value-Oriented-Programming - термин от Anthony Ferrara, изложенный хорошо в Beyond Object Oriented Programming. Это первый шаг в сторону DDD, некоторые еще называют это правильным ООП.

DDD - Domain Driven Design и CQRS - command-query responsibility segregation, event sourcing - связанные так или иначе вещи. Эти две категории будут оставлены для экспериментов в следующем году.

Проекты

Возможно, потенциальные популярные решения?

  1. Конфигуратор для Sismo
  2. Простой текстовый редактор

Генераторы

  1. Генератор роутинга
  2. Генератор для сериализации
  3. opensoft/php-wsdl-proxy-generator
  4. ...... ваши идеи? .........

Врапперы

  1. opensoft/epl
  2. git/git-merge-tool
  3. ...... ваши идеи? ..........

Разное:

  1. Парсеры больших файлов
  2. simple-serializer 2.0

Общие слова

Возможно, первые два проекта выделяются фундаментальностью сформулированной задачи. Но мне лично хотелось обратить внимание на rest задачи. Генератор роутинга, Генератор для сериализации, simple-serializer 2.0 - имеют спрос сейчас на нашем проекте. Последняя из них, имеет очень высокий приоритет. Также, решение рест задач и текущая моя работа, откроет возможность создать аналог apigility.

Почти во всех задачах вы познакомитесь с консольной компонентой симфони, получите опыт написания open source библиотек и бандлов.

Некоторые решения можно написать на Zephir.