Yireo - Developer training

Open main menu

Magento 2 Development

Configure DI XML with wisdom and build powerful extensions following from this

Configure DI XML with wisdom and build powerful extensions following from this

Magento 2 has arrived. This training gives developers the kickstart to start developing in Magento 2. It will cover new concepts like Dependency Injection and Plugins, but also help you migrate Magento 1 code to Magento 2. Essential for anyone willing to develop in this exciting new Magento!

Jisse Reitsma

Your teacher will be Jisse Reitsma

This training will be held with Jisse Reitsma as your guide. Jisse is the founder of Yireo, three times Magento Master, member of ExtDN, trainer and author. Jisse has been in the Magento ecosystem since the beginning (v0.99) and has created numerous Magento extensions. He also has been pushing better coding practices, like CI/CD, clean coding, coding standards and testing.

Pick the learning method that fits you best

Because everyone has different needs


On Demand

  • Full access to this course with 175 lessons with 15+ hours of video
  • Student notes (625+ pages)
  • Learn at your own pace
per year per individual


  • On-Demand package of this course
  • Teacher support via email & slack
  • Prioritized requests for new lessons
  • Get the personalized help that you need
per year per individual


  • On-Demand package of this course
  • Economical for groups of 5 and more
  • Freely debate company-specific topics
  • Online or on-site at your company

Custom pricing

per training day

There are no scheduled live trainings available

At this moment, there are no trainings scheduled in our agenda. However, we are always busy with planning more, so make sure to check out our online agenda. Alternatively, checkout our on-demand content or feel free to contact us for a custom in-company training.

Current video lessons in one single view

We are constantly updating our courseware, but the following is a real-life snapshot

Advanced git usage   n/a
Git essentials   n/a
Git beyond the basics   n/a
MySQL basics   n/a
Object-oriented PHP   n/a
Design patterns   n/a
Clean coding   n/a
Object Calisthenics   n/a
PHP 5.X syntax   n/a
PHP 7.0 syntax   n/a
PHP 7 syntax   n/a
PHP 7.2 syntax   n/a
PHP 7.3 syntax   n/a
PHP 7.4 syntax   n/a
PHP 8 syntax   n/a
PHP 8.1 syntax   n/a
Quick peek at Magento 2 architecture   n/a
Magento Admin Panel overviewfree10m 37s
Configuration filesfree05m 27s
Application entrypointsfree04m 10s
Global - Website - Store View (GWS)   n/a
Product types   n/a
Product attributes   n/a
Order flow   n/a
Frontend landscape   n/a
Basic theme   n/a
XML layout summary   n/a
Headless vs monolithic   n/a
Requiring a composer packagefree20m 00s
Semantic versioning   29m 22s
Composer repositories   13m 25s
Local composer repositoriesfree30m 02s
Composer patches   n/a
Magento composer plugins   n/a
Composer replacements   n/a
Magento Quality Patches   n/a
Handy composer tools   n/a
Minimum system requirements   08m 23s
Development platform   21m 03s
Disabling Two Factor Authentication   03m 07s
Docker approaches   n/a
Enabling Two Factor Authentication   n/a
Installing Magento   26m 52s
Installing sample data   10m 51s
Upgrading Magento   24m 46s
gitignore file   n/a
Migration from Magento 1 to Magento 2   n/a
Magento tips   n/a
Development toolsfree12m 34s
Development performancefree17m 28s
Deployment modesfree24m 04s
Using the Production Mode   n/a
Deployment checks   n/a
Deploying to production   n/a
Deploying new store scopes via env.php   n/a
Stupidness of `module:uninstall`   n/a
Using app:config commands   n/a
Code compilation   n/a
Using Jenkins for deployment   n/a
Zero downtime deployment   n/a
Blue Green deployment   n/a
Static Content Deployment   16m 35s
Development settings   n/a
Developer Tools   n/a
Setting up PHPStorm   17m 49s
Using XDebug with PHPstorm   n/a
Using bin/magento   n/a
Running cron   08m 32s
Using Magerun   08m 24s
Cache clean vs flush   n/a
Cache handling   09m 13s
Changing the admin path   n/a
Maintenance mode   09m 37s
Magento PHP Code Sniffer rules   n/a
Configuring the Magento coding standard in PHPStorm   n/a
Profiling tools   n/a
Redis caching   09m 05s
Setting the GWS scope via PHP   n/a
Setting the GWS scope in Nginx   n/a
Syncing with the production database   n/a
Tips   n/a
Handy modules   n/a
Installing a modulefree21m 38s
Preparing for module creationfree08m 53s
Creating a modulefree05m 11s
Module structure   n/a
Composer file   05m 47s
Module XML file   04m 18s
Module registration   03m 44s
Module commands   09m 54s
Module entrypoints   03m 28s
Adding Blocks via XML layout   16m 48s
Translating values   n/a
Using the store configurationfree11m 53s
Adding a simple CLI commandfree09m 14s
Logging   05m 35s
Creating a custom logger   n/a
How modules are ordered   n/a
What could go wrong with your module?   n/a
Using Mage2Gen   n/a
Tips and tricks   n/a
GWS (Global-Website-Store) in code   n/a
Order flow   n/a
Product Types   n/a
EAV in the database   n/a
Areas in the Magento application   n/a
Application layers   14m 31s
Interfaces and Service Contracts   13m 41s
Dealing with backward compatibiliby   n/a
Sandbox scriptfree07m 12s
Introduction to Dependency Injection   12m 00s
Object Managerfree13m 55s
DI preferencesfree16m 04s
DI recipees   n/a
Inject the App State and check for the area   n/a
Checking for the Developer Mode in your code   n/a
Injecting a Store Configuration valuefree20m 33s
Injecting the current product   07m 08s
Injecting the registry into your class   n/a
DI types aka constructor argument replacementfree20m 15s
Virtual Types essentials   33m 39s
DI factoriesfree39m 22s
Injecting URLs into your class   08m 52s
Creating a custom factory   20m 30s
DI proxies   37m 39s
DI interceptor plugins   08m 43s
Injecting the current customer session   05m 41s
Injecting the layout into your class   08m 16s
Getting your module path   n/a
Can you inject a Virtual Type?   n/a
Intercepting the ProductView controller   n/a
Creating a Slack logger   n/a
Category collection handling   n/a
Generating new products   n/a
Product pricing   n/a
Using the product repository   13m 51s
SearchCriteriaBuilder or SearchCriteriaBuilderFactory?   n/a
Using product stock   10m 23s
Adding console commands   n/a
Tips on commands   n/a
Frontend routes   17m 42s
Action results   11m 20s
Dealing with form keys   n/a
Adding messages   04m 21s
Adding complex messages   23m 18s
Adding custom handles in your controller   n/a
Adding a custom Action Result   n/a
Why do you need to clear `generated/` when changing a controller?   n/a
Adding a cronjob   05m 01s
Creating an email template   n/a
Hooking into email events   n/a
Configuring Magento to use SMTP   n/a
Testing emails   n/a
Block caching   n/a
Analysing caching tags   n/a
Keeping track of the customer with FPC enabled   n/a
Do not use Redis for Full Page Caching   n/a
Adding IdentifyInterface to ViewModels   n/a
Adding database changes via a module   07m 18s
InstallSchema   10m 55s
InstallData   12m 50s
Why the Uninstall schema does not make sense   n/a
Declaritive schemas   21m 34s
Declarative Schema patches   17m 09s
Declaritive whitelisting   n/a
Scenario: Add CMS Block to PHTML   n/a
Scenario: Add product pricing per customer   n/a
Anonymizing the database   n/a
Debugging tips   n/a
Building a mega menu   n/a
Object Calisthenics   n/a
PHPUnit "live testing"   n/a
Solving tickets efficiently   n/a
Splitting up modules   n/a
Using PHPCS   n/a

These videos are available as an On-Demand video training (with notes). See the pricing for details.

Get ready for certification with our Yireo course

This training prepares you for undertaking the following Adobe certifications:

  • Adobe Certified Professional - Adobe Commerce Developer (AD0-E711)
  • Adobe Certified Expert - Adobe Commerce Developer Expert (AD0-E709)

Note that more courses might be needed besides this training. For an overview, see our certification page

These are the options we give you:

Prepare for certification

Our Magento 2 (so Adobe Commerce) trainings are not part of the official Adobe ALS program. However, Yireo is known for providing training with high quality. Many Magento developers have reached official certification, thanks to Yireo. Additionally, we can supply our own Yireo Training Certificates.

At your place or ours?

Everyone learns at her/his own pace. We provide both in-house training and public training throughout Europe - whatever suits your team best. When 3 or more developers are attending, a custom training is often more economical. Contact us for more details.

You'll get courseware

Every workshop is accompanied with official Yireo coursematerial. Attendees are sent a digital version of this material after the training. It contains slides, comments and references. Additionally, our GitHub repos contain numerous more code samples.

Online classrooms

Online trainings are also our training: Via Zoom or Google Hangout sessions, our teacher is able to connect with your team. The benefit here is that the team is able to connect from various places itself as well, timeframes are more flexible. Afterwards, a video recording will be shared with all attendees for reference.

On-demand self-paced training

This training is also available as an On-Demand training: Via numerous video lessons, including accompanying student notes (equalling a book on their own), you'll learn about the topics in your own pace. And when you bump into questions, you can fall back to the teachers guidance.

This training is part of the following series

so that we'll be able to guide you all the way, step by step

Why Yireo?

  • Professional trainings at affordable prices
  • Highly involved in the Magento community
  • Passionate, enthousiastic, knowledgable

We have trained 1400+ Magento developers since 2009

Training topics

  • Advanced git usage
  • Git essentials
  • Git beyond the basics
  • MySQL basics
  • Object-oriented PHP
  • Design patterns
  • Clean coding
  • Object Calisthenics
  • PHP 5.X syntax
  • PHP 7.0 syntax
  • PHP 7 syntax
  • PHP 7.2 syntax
  • PHP 7.3 syntax
  • PHP 7.4 syntax
  • PHP 8 syntax
  • PHP 8.1 syntax
  • Quick peek at Magento 2 architecture
  • Magento Admin Panel overview
  • Configuration files
  • Application entrypoints
  • Global - Website - Store View (GWS)
  • Product types
  • Product attributes
  • Order flow
  • Frontend landscape
  • Basic theme
  • XML layout summary
  • Headless vs monolithic
  • Requiring a composer package
  • Semantic versioning
  • Composer repositories
  • Local composer repositories
  • Composer patches
  • Magento composer plugins
  • Composer replacements
  • Magento Quality Patches
  • Handy composer tools
  • Minimum system requirements
  • Development platform
  • Disabling Two Factor Authentication
  • Docker approaches
  • Enabling Two Factor Authentication
  • Installing Magento
  • Installing sample data
  • Upgrading Magento
  • gitignore file
  • Migration from Magento 1 to Magento 2
  • Magento tips
  • Development tools
  • Development performance
  • Deployment modes
  • Using the Production Mode
  • Deployment checks
  • Deploying to production
  • Deploying new store scopes via env.php
  • Stupidness of `module:uninstall`
  • Using app:config commands
  • Code compilation
  • Using Jenkins for deployment
  • Zero downtime deployment
  • Blue Green deployment
  • Static Content Deployment
  • Development settings
  • Developer Tools
  • Setting up PHPStorm
  • Using XDebug with PHPstorm
  • Using bin/magento
  • Running cron
  • Using Magerun
  • Cache clean vs flush
  • Cache handling
  • Changing the admin path
  • Maintenance mode
  • Magento PHP Code Sniffer rules
  • Configuring the Magento coding standard in PHPStorm
  • Profiling tools
  • Redis caching
  • Setting the GWS scope via PHP
  • Setting the GWS scope in Nginx
  • Syncing with the production database
  • Tips
  • Handy modules
  • Installing a module
  • Preparing for module creation
  • Creating a module
  • Module structure
  • Composer file
  • Module XML file
  • Module registration
  • Module commands
  • Module entrypoints
  • Adding Blocks via XML layout
  • Translating values
  • Using the store configuration
  • Adding a simple CLI command
  • Logging
  • Creating a custom logger
  • How modules are ordered
  • What could go wrong with your module?
  • Using Mage2Gen
  • Tips and tricks
  • GWS (Global-Website-Store) in code
  • Order flow
  • Product Types
  • EAV in the database
  • Areas in the Magento application
  • Application layers
  • Interfaces and Service Contracts
  • Dealing with backward compatibiliby
  • Sandbox script
  • Introduction to Dependency Injection
  • Object Manager
  • DI preferences
  • DI recipees
  • Inject the App State and check for the area
  • Checking for the Developer Mode in your code
  • Injecting a Store Configuration value
  • Injecting the current product
  • Injecting the registry into your class
  • DI types aka constructor argument replacement
  • Virtual Types essentials
  • DI factories
  • Injecting URLs into your class
  • Creating a custom factory
  • DI proxies
  • DI interceptor plugins
  • Injecting the current customer session
  • Injecting the layout into your class
  • Getting your module path
  • Can you inject a Virtual Type?
  • Intercepting the ProductView controller
  • Creating a Slack logger
  • Category collection handling
  • Generating new products
  • Product pricing
  • Using the product repository
  • SearchCriteriaBuilder or SearchCriteriaBuilderFactory?
  • Using product stock
  • Adding console commands
  • Tips on commands
  • Frontend routes
  • Action results
  • Dealing with form keys
  • Adding messages
  • Adding complex messages
  • Adding custom handles in your controller
  • Adding a custom Action Result
  • Why do you need to clear `generated/` when changing a controller?
  • Adding a cronjob
  • Creating an email template
  • Hooking into email events
  • Configuring Magento to use SMTP
  • Testing emails
  • Block caching
  • Analysing caching tags
  • Keeping track of the customer with FPC enabled
  • Do not use Redis for Full Page Caching
  • Adding IdentifyInterface to ViewModels
  • Adding database changes via a module
  • InstallSchema
  • InstallData
  • Why the Uninstall schema does not make sense
  • Declaritive schemas
  • Declarative Schema patches
  • Declaritive whitelisting
  • Scenario: Add CMS Block to PHTML
  • Scenario: Add product pricing per customer
  • Anonymizing the database
  • Debugging tips
  • Building a mega menu
  • Object Calisthenics
  • PHPUnit "live testing"
  • Solving tickets efficiently
  • Splitting up modules
  • Using PHPCS




Some Magento 1 experience
Knowledge of Magento 1 or 2 XML layout
Experience with PHP OOP

Frequently Asked Questions

There is a minimum number of attendees listed. What does this mean?

The training is only held when there is a number of attendees. This number is usually 4 but sometimes we bring this down to 2 or 3. This minimum number simply means that if a class is not "full", either you get a refund or your ticket is transferred to another date.

Jisse Reitsma

The teacher: Jisse Reitsma

Thus it came to be

When Jisse started with Magento, he already had years of experience programming in Joomla (back in the days when Joomla was actually the #1 CMS - believe it or not). Back then, open source cart solutions were lacking and Magento 1.0 brought a lot of hope.

Quickly Jisse dived into the new architecture: In 2009, he built his first extensions, among which the fundaments of a bridge between Joomla and Magento (MageBridge) and various project-specific extensions (among which payment providers and custom MVC/EAV modules).

A relieve

Over the years, he experienced what most Magento developers experienced with M1: A lot of power, but also frustration. After a couple of years, it no longer was cutting-edge and it barely adopted new developer standards. When the new Magento 2.0 alpha 1 came out, Jisse started playing with it. And he was relieved to see modern tools in its architecture: Composer, PHP namespacing, testability, CLI-driven management, proper design patterns.

Again, after building some modules and dummy projects, the first Magento 2 developer training was given in January 2017 (two months after the official release) and numerous M2 trainings have followed for both backend developers, frontend developers and devops.

Frontend sagas

Currently, with Magento 2 being several years old now, the fuzz is no longer about its backend architecture: It is the frontend that matters. Jisse has given numerous frontend development trainings, where people complain about LESS (and not SASS) being used, loading times to be slow (while in fact M2 allows for enough tuning to make it bloody fast), an archaic combo of Knockout/RequireJS (while they both serve their purpose in regards to backwards compatibility).

PWA is the new keyword. Jisse has dived into React, Redux & service workers in combination with GraphQL and NodeJS tools. He is currently working in various initiatives to help developers embrace the new frontend stack (ExtDN, Vue Storefront, DEITY). Also, he has added Docker and Kubernetes to his vocabulary.

As of yet, it is fair to say that Magento holds little surprises for Jisse. He is your guy to train you or your developers properly in both backend and frontend technology.



GitHub organizations

Legal information

Other Yireo sites

Get Social

About Yireo