I once read some of the code that runs PHP.net and it is frighteningly bad. Like hacked-together homegrown feed readers and HTML being parsed with regular expressions.
In my experience PHP is a lot like ASP. It is easy to get started in, so attracts a lot of entry-level developers who produce a lot of entry-level code, and nothing about the platform particularly encourages good practices.
I've been writing PHP for years, and have mixed feelings about it personally.
You're right that some of the largest websites are built primarily on PHP (Facebook comes to mind) and it works remarkably well. For one thing, PHP is fast. It blows Ruby out of the water and (for the time being) leaves Python in the dust. It also doesn't run into the infamous scalability issues that plagued Rails for some time (and in some ways continues to).
I rather like the syntax of the language - it's Perl but a bit more structured, and less ambiguous, which is pretty cool to have.
Put two and two together, and in the right hands PHP is a formidable tool that ought not be underestimated (though frequently is thanks to flavor-of-the-day coders).
What it is guilty of, though, is an unmitigated clusterfuck of a standard library... if it can even be really called a standard library. There's no concept of namespaces (none that is used anyway), and no consistency with API naming nor design. Accessing the various core functions within PHP is really just arcane tribal knowledge that you acquire from Google - there's no systematic elegance to anything. Remove the gigantic tomes of documentation surrounding PHP and the language is utterly incapable of standing on its own.
PHP is fast to deploy, comes installed on a lot of cheap web hosts, and has literally zero set up cost - in terms of framework requirements, dependency installation, daemons, etc etc.
To write a line of dynamic code and have it run, in PHP, is really as simple as typing out the code and saving the file. No build, no deploy, no frameworks to learn, just code that runs.
This encourages a lot of "well, I just need a little bit of dynamic stuff on my page" attitude, which as we all know eventually evolves into "wouldn't it be nice if I can also do this..."... and before you know it, 5 innocuous lines o PHP turns into 5000 lines of spaghetti code that has absolutely no design behind it.
PHP's reputation is also sullied by a number of high-profile projects surrounding it that have absolutely atrocious code quality - zero design effort and utter spaghetti. Guilty parties include: phpBB, osCommerce, WordPress, etc.
It's kind of 2000-ish, but it's not ugly. It's simple, clear, concise and would do exactly what's required if not for the call to an undefined function. What benefit would an MVC framework have here? A fancy powered hammer that can get into tight corners and automatically hammer nails is really cool, but sometimes all you need is the bottom of your shoe.
I'm almost willing to cut them some slack on that point since this is a bugfix release (it might just be the function that lists the bugs fixed). But I'd rather focus on the comedy :)
22 comments
[ 6.0 ms ] story [ 88.5 ms ] threadYou're right that some of the largest websites are built primarily on PHP (Facebook comes to mind) and it works remarkably well. For one thing, PHP is fast. It blows Ruby out of the water and (for the time being) leaves Python in the dust. It also doesn't run into the infamous scalability issues that plagued Rails for some time (and in some ways continues to).
I rather like the syntax of the language - it's Perl but a bit more structured, and less ambiguous, which is pretty cool to have.
Put two and two together, and in the right hands PHP is a formidable tool that ought not be underestimated (though frequently is thanks to flavor-of-the-day coders).
What it is guilty of, though, is an unmitigated clusterfuck of a standard library... if it can even be really called a standard library. There's no concept of namespaces (none that is used anyway), and no consistency with API naming nor design. Accessing the various core functions within PHP is really just arcane tribal knowledge that you acquire from Google - there's no systematic elegance to anything. Remove the gigantic tomes of documentation surrounding PHP and the language is utterly incapable of standing on its own.
Oh, and it still can't parse XML worth a damn.
To write a line of dynamic code and have it run, in PHP, is really as simple as typing out the code and saving the file. No build, no deploy, no frameworks to learn, just code that runs.
This encourages a lot of "well, I just need a little bit of dynamic stuff on my page" attitude, which as we all know eventually evolves into "wouldn't it be nice if I can also do this..."... and before you know it, 5 innocuous lines o PHP turns into 5000 lines of spaghetti code that has absolutely no design behind it.
PHP's reputation is also sullied by a number of high-profile projects surrounding it that have absolutely atrocious code quality - zero design effort and utter spaghetti. Guilty parties include: phpBB, osCommerce, WordPress, etc.
Guessing someone fixed it, but it didn't replicate
Here's the "Frozen" page: http://www.freezepage.com/1258664860QXBBMRAPHX
Apparently the error got through and was fixed quickly, but the mirroring process is what lagged: http://twitter.com/rasmus/statuses/5868415824