Mario Peshev has a new post with a reminder to all of those developing OOP-based software out there (not just PHP devs, really) - don't fall into the "over-abstractionism" trap.
There is a small number of developers who come from the higher language world (like Java or .NET) used to all design patterns for facades, decorators, bridges, abstract factories, DAO/DTO and so on, implementing them in PHP projects. It's usually cool and leads to a better control over the projects once you spend enough time browsing across the different 'incoming' external parameters taking action within the calls. I'm usually 'for' that, as most of the projects lack any kind of maintainability. However...don't overuse abstraction.
He lists a few different situations where he's seen this over-abstraction happening like in front-end controllers, single "handle it all" methods, using third-party scripts and poorly implemented abstraction layers.