Going through PHP design patterns and SOLID principles