Some arbitrary "best practices" don't make up for the language's general inadequacies (nor do any existing libraries). You might be able to write slightly less bad code, but you still aren't writing expressive code.
I would like to argue the C language argument here. If I want to shoot myself in the foot, the language should let me. If I want to paint the Mona Lisa, the language should let me.
Features that PHP is missing and would be very difficult to implement in use code include continuations, lexical closures, macros, a sane type system, multimethods, a metaobject protocol, and many others. Why confine yourself to the tools of a 1950s-era programmer when it's 2009?
(PHP isn't even very good at "web stuff", although the frameworks try to improve this situation.)
I'm not sure what you mean by Web stuff, but here's a couple things I like about PHP:
1. When I want to do a quick Web page with no effort to last -- just to test something or prov a concept or something -- all I have to do is put together one or two PHP files and it's up. Even then I follow all the good programming practices: separation of business and presentation code, proper classes etc, and PHP let's me do that just fine.
2. If I properly organize my code (which I usually do) all I need to move a site from one location to another is simply copy a single directory. This even includes smaller SQL based sites since PHP5 has built-in support for SQLite. And it works on virtually any hosting available today.
Granted, these features are not really a compensation for all PHP's failures (don't ge me started), but there are times when those particular advantages outweigh anything else.
This is the amusing irony of PHP. It's a programming language designed to make generating HTML and interfacing with the web easy, but it's actually very hard (compared to other languages) to do either of these things.
I don't think anyone wanted generating HTML to be easy with PHP; the original point was that your little script was embedded in the HTML. The document was the primary thing, and the code was just for this or that specific purpose.
Although the article didn't cover any specifics of the language, I think PHP has definitely improved. For what it lacks in elegance, it makes up in ease of deployment and scalability. Overall, the improvements made to PHP over the past few years and the upcoming changes in PHP 5.3/6.0 and the variety of excellent frameworks to choose from, make it a very good language to keep in your web development toolkit. It doesn't do everything extremely well, but it does many things well enough.
It is amazing that people are willing to sink thousands of hours into programming around PHP's problems (probably without noticing) because they are afraid to run "cpan -i Some::Modules" and cut-n-paste a FastCGI configuration into their web server's config file.
Ease of deployment is nice, but deploying other languages is not much harder, and it's significantly easier to actually write a reliable application.
23 comments
[ 463 ms ] story [ 132 ms ] threadPHP does that.
Full size: http://williamriggins.com/mona.php?x=400&y=571
Favicon Size: http://williamriggins.com/mona.php?x=10&y=10
Code (minus base64'd image constant): http://pastie.org/506643
(PHP isn't even very good at "web stuff", although the frameworks try to improve this situation.)
1. When I want to do a quick Web page with no effort to last -- just to test something or prov a concept or something -- all I have to do is put together one or two PHP files and it's up. Even then I follow all the good programming practices: separation of business and presentation code, proper classes etc, and PHP let's me do that just fine.
2. If I properly organize my code (which I usually do) all I need to move a site from one location to another is simply copy a single directory. This even includes smaller SQL based sites since PHP5 has built-in support for SQLite. And it works on virtually any hosting available today.
Granted, these features are not really a compensation for all PHP's failures (don't ge me started), but there are times when those particular advantages outweigh anything else.
—PHP user
Ease of deployment is nice, but deploying other languages is not much harder, and it's significantly easier to actually write a reliable application.