At Magento we spend a lot of time thinking about the architecture of our platform. We make our product easy to understand, extend, and customize. The main parts of good architecture include design of the public interfaces, design of the classes and relations between classes. In this talk, we will cover the following design principles used in Magento:
- Object decomposition
- Design flaws (e.g. work in constructor, temporal coupling, visibility of class methods/properties, etc.)
- Code reuse: inheritance vs composition
- Static methods
- Object state
- And more.