Dependency Injection
Pass dependencies into classes instead of creating them internally.
Pass dependencies into classes instead of creating them internally.
Model specialization with parent (base) and child (derived) classes.
Reference the current class with self:: for static members and constants.
Define contracts that classes must fulfill without prescribing implementation.