Re: Namespace resolution rules has been changed?

From: Date: Fri, 14 Nov 2008 23:03:22 +0000
Subject: Re: Namespace resolution rules has been changed?
References: 1 2 3 4 5  Groups: php.internals 
Request: Send a blank email to internals+get-41919@lists.php.net to get a copy of this message
let's look at this code: <?php namespace foo\classes; class buh extends foo\stuff {} ?> There are a few things to keep in mind. PHP has __autoload(), which C# does not have. Thus, a solution such as: 1) try foo\classes\foo\stuff 2) try foo\stuff Greg, this is clear. I am trying to point something different - to try ONLY 2) and never try 1).
Why? I have developed framework using PHP namespaces and studied Zend Framework source codes and result is: if we use the new resolution rules (1), than in nearly all cases developers must prefix class names with \, only in few cases prefix is not required. Why? Because usually classes in more nested namespaces extends classes in less nested namespaces. If you don't believe, look in framework sources :-) So, resolution alá 1) is nearly in all cases pain and in few cases nice, resolution alá 2) is nearly in all cases nice and in few cases not too nice. Furthermore, resolution alá 1) means, that namespace named foo\stuff is fiction - there is only namespace named \foo\stuff. Lets use \foo\stuff everywhere: namespace \foo\classes; use \foo\stuff as stuff; This is (at least) very ugly. David p.s. Save useless backslashes, save a peace :-)

« previous php.internals (#41919) next »