This document provides an overview of intermediate object-oriented programming concepts in PHP, including magic methods, polymorphism, collections, filtering collections, and the SPL iterator. Magic methods allow objects to intercept method calls and property access, such as __construct, __destruct, __call, __get, __set and more. Polymorphism allows code to use different objects in the same way through interfaces. Collections and the iterator pattern are demonstrated using a SilverwareDrawer class. Loose coupling and high cohesion principles are also discussed.