Magento
General
- Magento 2 was released in 2015
- Variants
- Magento Open Source (before 2018 Magento Community Edition)
- Magento Commerce (before Magento Enterprise Edition)
- Differences see here
- object oriented
- uses design patterns (GoF) like GRASP, but in an individual manner
- uses MVC with thin controller approach (Business Logic is mainly in Model or View), View is configured by layout XML
- user groups:
- web business user
- system administrator
- web API user
Technology
- PHP 7 and coding standards PSR-0 to PSR-4
- MySQL 5.6
- Apache 2.2, 2.4
- PHP Composer
- HTML5
- LESS CSS
- jQuery
- RequireJS
- Zend Framework
- Symfony
- Magento Testing Framework
- ...
Coding Standards
PHP
- PSR-1
- each sub-word should be capitalised in both instances, with classes having an initial upper-case letter (StudlyCaps) and methods an initial lower-case letter (camelCase)
- Class constants MUST be declared in all upper case with underscore separators
- PSR-2
Architecture
- layers:
- presentation
- service
- domain
- persistence
Persistence Layer
- consists of
- layouts
- blocks
- templates
- controllers
Service Layer
- bridges presentation and domain layer
- provides service contracts (PHP interface, REST/SOAP API): a service contract is a set of PHP interfaces that is defined by a module. This contract comprises data interfaces and service interfaces.
Business Layer
- implementents the business logic
- modul communication via event observers, pluginsa and di.xml
Persistance Layer
- implements CRUD (create, read, update, delete) requests
- there are 3 types of classes:
- model classes: don't contain any code for communicating with the DB
- resource classes: read and write to the DB
- collection classes: array of individual model instances which implement IteratorAggregate and Countable
- models and resources are often seen as an unified thing called model
- there are simple resource model and Entity-Attribute-Value (EAV) resource model
Modules
A Magento Module is a group of directories containing blocks, controllers, helpers, and models that are needed to create a specific store feature.
Caching
- located in /var/ directory
Code Generation
- Factory, Proxy and Interceptor classes are generated and stored in /var/generation/
Directory Structure
- /var/generation: contains only? generated files
- /var/?: cached infos
Magento Marketplace
- UweHeuerAccessKey
- Public Key: 6f7df3e4e393b84da74c41937990b227
- Private Key: a39505396b6112f47c43aa8c565cad8b
Installation
Sources
- Magento Marketplace
- free videos
- many Magento 2 articles
- Magento DevDocs
- Kindle Book 'Magento 2 Developer's Guide'