Hacker News new | ask | show | jobs
by jlgbecom 5738 days ago
I've been using PHP professionally since it was called PHP/FI, and while it's a terribly designed language, I've longed stopped hating it. I know all of it's quirks, and I know all of it's work arounds, and the density of support it has can't be beat.

I wouldn't complain if a better server-side language came around (not a big fan of Ruby's syntax, but Google's Go looks enticing), but until then, I've built incredibly complex apps in PHP, and rarely do I run into a limitation of the language. My biggest issue in the past was the lack of namespaces, and 5.3 has those.

I think the best thing you could do to get a new language as popular as PHP isn't to evangelize, or even to make the language dead simple, but make it dead simple for administrators to add support to a typical shared hosting environment.

4 comments

PHP's amenability to shared hosting environments is an advantage I failed to mention.

I'm pretty much in the same place as you with regards to PHP: I know it like the back of my hand and everything and everybody works with it. But the code is ugly compared to other languages and I really want method chaining, dammit. Plus, of course, I don't want to have to write an MVC framework every time I want to do something.

Unless you're being more specific than I think you are, PHP5 has basic support for method chaining, I use it all the time.
I use structures like this in PHP5 all the time:

  $object->doThis()->doThat()->doTheOther();
But maybe he is referring to method chaining using PHP's built-in functions. There isn't a way that I'm aware of to do the following (short of wrapping the built-in functions with your own classes):

  $string->preg_replace("/[^A-Za-z]+/","_")->trim()->upper();
Precisely what I meant, thanks for clarifying.
But this is not method chaining, that's simple function nesting, and can easily be done as:

$string = preg_replace("/[^A-Za-z]+/","_", trim(upper($string)));

Or am I missing your point?

Re: MVC re-writing. I settled on Zend Framework and havn't looked back. http://framework.zend.com/ (link added)
> I really want method chaining, dammit

What? We've been doing code like:

    filter('user')
        ->first_name->like('bob')
        ->age->equals('22')
        ->order_by->created->desc
        ->find();
Since 5.2.x
Method-chaining has been there for a while.

I keep happening upon projects with their own craptacular homebrew MVC framework, and their own abysmal homebrew caching.

Fix is a swap for yii and memcached -- feel free to choose your faves.

something tells me you don't know what method chaining is
Yeah, any replacement will need to be _everywhere_. No-one talks about PHP deployment issues, because it's literally everywhere. You have to build your own server if you want one _without_ php. That's it's killer feature.
while it's a terribly designed language, I've longed stopped hating it. I know all of it's quirks, and I know all of it's work arounds, and the density of support it has can't be beat.

Stockholm Syndrome?

Oh yeah, it's totally like being violently threatened and abused by terrorists. That's a perfectly reasonable analogy.

Seriously, when you've been programming long enough, you really stop caring about programming languages. I could build a huge project in VB.Net or ColdFusion if I had to at this point. If there's good reasons for why a language should be used (and PHP has plenty of them that are external to the language itself), then it's immaterial to me.

5.3 has namespaces? Awesome :)
Yes, but in true PHP fashion they're just slightly ugly. :)

namespace my\name;

$c = new \my\name\MyClass;

Leave it to PHP to look up to MS-DOS for inspiration.
Ug. I thought you were joking. Now I'm sad for humanity.
Ugly but functional, that's good enough for me :)