PHP OOP: Návrhové vzory - SOLID principy [10]
Návrhové vzory, a to alespoň SOLID principy, by měl znát každý objektově orientovaný vývojář, který to myslí s vývojem vážně. Na internetu se dá nalézt spoustu výkladů, ale za mě mohu doporučit toto video od Jakuba Kratiny, kde vše lidsky vysvětluje.
V následujících příkladech jsem pouze přepsal jím zmiňované příklady SOLID principů. Nepoužil jsem oficiální definice principů, ale lidský popis daného princitupu dle Jakuba.
Single-responsibility principle
Je jen jeden důvod proč bychom měli změnit chování třídy.
Každá třída má mít pouze jednu zodpovědnost.
https://github.com/hydroxid/php_examples/blob/main/3673_solid_principles/single_responsibility.php
Open–closed principle
Třída by měla být otevřená rozšíření, ale uzavřená modifikacím.
https://github.com/hydroxid/php_examples/blob/main/3673_solid_principles/open_closed.php
Liskov substitution principle
Metody třídy, které mají stejný interface, by měly vrace stejný výsledek (datový typ).
https://github.com/hydroxid/php_examples/blob/main/3673_solid_principles/liskov_substitution.php
Interface segregation principle
Třída by neměla implementovat metody, které nepoužívá.
Nedělat jeden moc chytrý interface, ale použít více interfaců (segregovat je).
Třída by neměla implementovat interface, který nepoužívá.
https://github.com/hydroxid/php_examples/blob/main/3673_solid_principles/interface_segregation.php
Dependency inversion principle
Všechny závislosti, které třída má, mají být interface.
https://github.com/hydroxid/php_examples/blob/main/3673_solid_principles/dependency_inversion.php
Zdroj: https://youtu.be/M5gmbkQQNQQ (Jakub Kratina - Návrhové vzory)