Wielodziedziczenie przez interfejsy
Interfejsy a typy sparametryzowane
Trait a przestrzenie nazw
Dynamiczne właściwości i metody (stdClass)
Klasy abstrakcyjne a polimorfizm dynamiczny
Porównywanie obiektów (==, ===)
Open/Closed Principle (OCP)
Kiedy używać klas abstrakcyjnych?
Definiowanie klasy
Liskov Substitution Principle (LSP)