

PHP 5.3.0 Released - danw
http://php.net/releases/5_3_0.php

======
intranation
Is it just me, or is the namespace syntax HORRIFICALLY ugly?

Couldn't they just overload the "::" syntax or something? Maybe ":::"? Every
time I look at an example I feel like something is being escaped.

EDIT: the reasoning as to why "\" is here:
[http://wiki.php.net/rfc/backslashnamespaces#resolution_of_t_...](http://wiki.php.net/rfc/backslashnamespaces#resolution_of_t_string_t_paamayim_nekudotayim_t_string_and_why_this_kills_as_namespace_separator)

~~~
troels
"::" wouldn't work, because it's ambiguous at compile time. Personally I would
have preferred ":::", but at some point it turned into a [bike-shed
discussion](<http://www.bikeshed.com/>), and then a few of the core developers
made a judgement call. I don't think they realised how controversial a choice
they'd made, or perhaps they just didn't think it through, but once the pick
was made, there was really no turning back, because of the politics. That's
php core for you, and honestly I think it's a major flaw of php.

It's sort of the same way that GOTO entered the language too.

~~~
wvenable
> "::" wouldn't work, because it's ambiguous at compile time.

Why is "::" ambiguous at compile time? It seems to me something is rotten
here. C++ using :: for both namespaces and static access of classes. Why
didn't PHP go the same way?

I never complain about the choice of operator, I complain about it's need to
exist in the first place. :: would have done the job just fine, just as it
does in C++, which is where they stole it from in the first place.

~~~
Scriptor
For some reason the PHP developers think it should be Ok to have a class in
your code with the same name as a namespace you're using. I just tested this
out with Python and it seems that doing the same thing simply gives you what
was last defined, so if you have import lib and then class lib you will just
end up with lib as being the class.

Frankly, it's insulting to me that the PHP team doesn't think I have the
skills needed to not name my classes after namespace _I_ imported.

------
craigbellot
The addition of lambda functions and closures is a huge forward step for php.

~~~
there
with late static bindings, hopefully the php-activerecord project will get
more attention and users since 5.3 is out of release candidates.

<http://github.com/kla/php-activerecord/tree/master>

~~~
breck
i'm also excited about lsb. i ran into a situation the other day where they
would have been extremely helpful

------
Oompa
I'm going to upgrade immediately so I can use goto.

Why am I being downmodded? I'm quite serious. I think it'll help clean up some
of my previous PHP code.

~~~
smanek
There are dozens of valid reasons to hate PHP. I don't know why everyone keeps
picking on GOTO though.

There are situations where it is the clearest and most concise way to express
what you want (in modern times we emulate this functionality with
continuations, exceptions, etc. because of the stigma attached to to GOTO).
See
[http://pplab.snu.ac.kr/courses/adv_pl05/papers/p261-knuth.pd...](http://pplab.snu.ac.kr/courses/adv_pl05/papers/p261-knuth.pdf)
for a few examples.

Lots of perfectly respectable languages (Scheme, Lisp, C-Sharp, etc) have
GOTOs in some form or another. Yes, you can abuse them, just like you can
abuse functions, methods, objects, or anything else.

~~~
Oompa
I'm not hating, I think it'll help clean up my PHP code. Just like you said,
there's nothing wrong with GOTOs unless they're abused, just like any other
language feature.

~~~
aceofspades19
How would gotos clean up your code?

~~~
pmjordan
They can be extremely useful in error handling. They're also great as a
substitute for labeled break statements if your language doesn't support them.

~~~
aceofspades19
What ever happened to exceptions, which were explicitly invented to handle
errors

~~~
pmjordan
Yeah. Turns out they're no silver bullet either. These days, my approach is
pragmatic: use whatever works and produces the most readable code.

------
shaunxcode
Here is a real question. Why could they not use a simple single : for
namespaces? It would be able to parse that just fine. And it would actually
look clean/nice.

~~~
Raphael
The ternary operators conflict with that. ?:

