Otóż, zastanawia mnie taka rzecz, mamy aplikację, w której stosujemy pewnego rodzaju moduły. Moduł składa się z jednego pliku PHP, w którym jest klasa. Klasa ta dziedziczy po ogólnej klasie (załóżmy: Module) oraz implementuje interfejs (ModuleInterface). Dziedziczy, by móc korzystać z dobrodziejstw aplikacji, na której działa, a implementuje, by każdy moduł posiadał jedno wspólne API, by aplikacja wiedziała, jak je uruchomić (moduły).
Teraz pytanie: Jeśli w aplikacji, modułów mamy przykładowo 20 (każdy z nich może być też wielokrotnie konkretyzowany), to czy za każdym razem sprawdzać, czy dany moduł implementuje dany interfejs oraz czy dziedziczy po danej klasie? Sprawdzanie za każdym razem kolejnej klasy będzie sprawiać obciążenie, w tym wypadku niepotrzebne (IMO). Jeśli programista nie użyje dziedziczenia, to sam zauważy, że coś mu nie działa, więc "podepnie" klasę do innej (w tym przypadku Module). A jeśli nie zaimplementuje interfejsu... no cóż, najprawdopodobniej wyskoczy błąd PHP, że nie ma takiej metody - jeśli defacto jej nie doda do klasy.
Jak bardzo należy trzymać się wydajności aplikacji, na rzecz sprawdzania tego typu rzeczy. I nie chodzi mi tylko o moduły, ale praktycznie każdą rzecz, która powinna posiadać dziedziczenie lub implementować jakiś interfejs.