PHP is pragmatic and pretty fast, but everything, everything, everything, beyond the "HTML template language" bits, are bolted on with whatever tools were handy at the moment. I'd be stunned if more than a couple hours of design work went into the object system, the type system (where == and === are used for evil rather than good), or even the standard library function names.<p>It has some strengths: Big library (not as big or as high quality as CPAN, so if library support is what you need, go for Perl), a lot of example code (but it's mostly horrible quality...even good examples are pretty bad in spots), and really easy deployment. So, if you're building an Open Source project that you want a lot of people to use, it's a great choice--PHP is available on every hosting server on the planet. Or, if you need a "blank-plus-this-widget" you can probably find the "blank" already written in PHP and then build your "widget" on top.<p>But, if you're starting from scratch, why commit yourself to working with a shoddy language for the months or years it'll take to finish? There are good imperative languages out there for web app development: Ruby and Python, in particular. Though the frameworks craze for these languages are partly to bridge the gap that they have with PHP (they're all missing a "view" layer for the web, because PHP is a reasonably powerful, if ugly, template system), and a lot of the other crap just makes things ugly...they get built for one particular application and then stretched for general-purpose use, and in the stretching they get a bit misshapen and hard to fit into any specific task.<p>Anyway, Ruby and Python are pretty and reasonably consistent languages that are nice to work with. PHP is neither. Perl...well, it ain't necessarily pretty, but CPAN is hard to beat when you just want to get the job done...and you can treat it as a functional language pretty effectively, which is all the rage around these parts (and you'll probably want to after you see the bolted on object system).