A curated list of amazingly awesome resources for (not only) LMC developers.
The aim is to provide a list of "must-read" resources about not widely known or often neglected topics. If you get through them, they will surely make you a better and even more awesome developer - we promise!
- 🇨🇿 Resource is in Czech (otherwise it is in English)
- 🎥 Resource is a video (otherwise it is an article)
- Fluent interfaces are evil - there are actually very few cases when fluent interfaces should be used.
- Article series by Matthias Noback:
- Principy objektově orientovaného návrhu (🇨🇿) - article series covering SOLID and GRASP patterns.
- Verzování Databáze (🇨🇿 🎥) - why and how to migrate your database with backward-compatibility.
- Technický dluh (🇨🇿)
- Extremely Defensive PHP - Avoid mistakes. Be cautious about your code.
- Named constructors - especially value objects may be better instantiated via static named constructors, instead of
__construct()
. - Symfony komponenty (🇨🇿) - article series about standalone Symfony components.
- Dealing with exceptional conditions (🎥) - best practices for dealing with exceptions in PHP.
- Main ideas are also summed in an article.
- Code reviews v praxi (🇨🇿)
- Code review checklist (🇨🇿)
- Co nás naučilo code review (🇨🇿)
- Funkční systémové testování: když unit-testy nestačí (🇨🇿) - what is functional system testing and when to use it.
- Jak a proč fixupovat (🇨🇿) - how and why use fixup commits (especially during code-reviews).
If you feel some resource matching aim of this document (see the beginning) is missing, you are welcome to contribute! But please follow this rules:
- Add one new resource per one pull request.
- Use icons (🇨🇿 🎥 ...) if applicable.
- Add short description why the resource is awesome. The description sentence should end by a dot.
- If the resource is in Czech, make the title (link) also in Czech, but the description should be always in English.
- Also please note this list is curated, as we want it to contain only the most important resources. This means suggestions are not automatically accepted and may be rejected if we feel they does not match the mission of this document.