Hey,

I think that using \ to prefix global symbols in namespaces would be
quite dumb. It would feel counter-intuitive because then if your
coding you would need to think to yourself, "am I in a namespace?",
thus increasing the chance for simple errors. It would be incedibly
annoying when writing php libraries, because all of the library code
would be in namespaces, so you would need to prefix \ in front of
_every single_ function call in your library.

A change like this will also partially break code - rather than users
just appending 'namespace' at the beginning of every code file, they
would also need to update all global function calls. History has shown
us that breaking code (e.g. PHP4 - PHP5) slows adoption of new
versions.

Just my 2 cents.
Josh


On Mon, Oct 27, 2008 at 10:06 PM, Stan Vassilev | FM
<[EMAIL PROTECTED]> wrote:
> Hi,
>
>
> Now that we have a separator, it's time to clarify what happened to the 
> resolution order for functions and classes, which if I read Greg's messages, 
> is still not clearly defined.
>
> 1) I think we've established that autoloading + fallback for classes is 
> unworkable, as it either causes excessive autoload triggering, or 
> alternatively allows internal classes to override unloaded but 
> to-be-autoloaded namespaced classes. Then why is it still under consideration?
>
> 2) Making the backslash optional for internal functions means popular drop-in 
> replacements for internal functions and extensions in global space, which 
> work today, will break in a namespace, examples: libcurlemu. Also check any 
> comments on PECL functions on php.net, and you'll see a myriad of drop-in 
> replacements people use today.
>
> Also, for those who want to automatically convert their internal functions to 
> backslash prefix for use in namespaces, you can use this quick snippet I 
> wrote (works in 5.2.x too):
>
> http://pastebin.com/f13125acd
>
> I don't make guarantees it's perfect, but it can be improved and given to 
> people as a porting aid.
>
> Opinions about how disruptive a mandatory backslash for global symbols *in 
> namespaces* would be, are welcome. Keep in mind that making the backslash 
> optional will lead to code breakage (such as for above drop-in replacements, 
> class autoloading etc.) and slower performance (runtime resolution of 
> function calls).
>
> Think of it as file paths. When you're inside a directory you need to prefix 
> your path with "/" (eg "\") to refer to the root, but you don't need to do 
> that when you're in the root directory.
>
> Regards,
> Stan Vassilev

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to