So, from a working developer standpoint, the PHP market has segmented into three distinct units.
The Framework Crowd
There’s an old joke about longtime PHP developers having built, on average, 2.75 frameworks. Those days are long over, and most half-way sane and/or intelligent people who want to build an application using PHP start with one of the existing frameworks, such as Cake, Code Igniter, or Symfony.
While occasionally overkill, the benefits of not having to solve common web application problems over and over again remain invaluable, as well as providing management with a degree of cover by using a well accepted and established platform.
The CMS Crowd
A step away (up or down, I won’t say) from the framework crowd are the CMS folks. Over the years, most CMS and/or blogging applications start morphing into development platforms. WordPress, Movable Type, Drupal, and Joomla, spring immediately to mind.
While not full fledged programming frameworks, these platforms all offer a standard architecture/process for writing new code. Additionally, many of them solve common feature requests for websites out of the box (user accounts, for example). When exactly does a customized install become an application?
The Filthy Hacks/Poor Suckers/Perfectionists
Words to strike terror into the heart of any programmer.
In a way, PHP is the new Cobol. There’s tons of code that’s been written over the years, and replacing it would be a huge undertaking, often not worth the effort (financially speaking). This leaves organizations having to maintain these legacy applications, and bolt on features as need be.
I’ll allow that there’s (probably) some really great custom proprietary frameworks out there, but this is still a dicey situation from a management perspective. Each new programmer needs to be brought up on the custom framework, and you don’t have any easy way to tell if someone will be able to hack it or not.
Balkanization (without the genocide)
This leaves a PHP developer in a tricky position. Rather than having to keep up with updates and best practices for a single language/platform, you instead have countless platforms to keep up with. Although similar, each requires a different approach to development. Ultimately, most developers will be forced into a position of rolling the dice and becoming an expert with a single platform, or settling for being a generalist with a broad understanding of each platform but no real depth.