Neither is Basic! Really, normally I'm trying to be objective, but I just can't when it comes to PHP. I've done a lot of stuff in PHP over the years ( yes, including a CMS, Portal, Guestbook and Gallery ) but as far as I can tell this language meets every requirement to be disqualified as something to consider when it comes to serious, professional software development.

There is certainly good software ( or software that pretends to be good ) written in PHP. But it's not the majority. PHP just encourages programmers to do everything insecure, non-reusable and not really portable.

Just think of the word PHP/MySQL, which is nothing but a pain in the ass. I've been running Postgres for years, and every now and then a small PHP script comes my way requiring MySQL. Whhuuzza. No Database Abstraction. And now that there is one, all popular software still uses these funny mysql_do_whatever() methods.

Function naming is certainly another thing that terribly went wrong at some stage of the development. Has someone ever scanned the PHP sources for the functionNameObfuscator.c? I guess there is none, as no program could ever obfuscate stuff that badly. Now, in the upcoming PHP release there will be finally support for Namespaces, though I'm not really convinced that any of the built-in stuff will be used there prior to 2010.

PHP is perfect to learn some concepts. Like OOP, because there is no need to compile stuff, no need to worry too much about data types and stuff, but once you're about to do a real project, keep in mind that type checking, namespaces etc. are stuff that could potentially matter at some point of the development. 

What I find most confusing is that simple statements just don't work. Why? I don't know, they just don't. Example? There you go

// assuming the function foobar() returns some array.
// this won't work.
echo foobar()[0];

Cool, hu? Not really. And as far as anything WebProgramming is concerned, I just learned my lessons and use something like Merb, Rails or even Java EE. G'day.