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 :-)

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

Reply via email to