Ровно год назад я прочитал лекции по 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 - связанные так или иначе вещи. Эти две категории будут оставлены для экспериментов в следующем году.
Возможно, потенциальные популярные решения?
Генераторы
Врапперы
Разное:
Возможно, первые два проекта выделяются фундаментальностью сформулированной задачи. Но мне лично хотелось обратить внимание на rest задачи. Генератор роутинга, Генератор для сериализации, simple-serializer 2.0 - имеют спрос сейчас на нашем проекте. Последняя из них, имеет очень высокий приоритет. Также, решение рест задач и текущая моя работа, откроет возможность создать аналог apigility.
Почти во всех задачах вы познакомитесь с консольной компонентой симфони, получите опыт написания open source библиотек и бандлов.
Некоторые решения можно написать на Zephir.