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 :-)
A quick study on the Zend Framework source reveals most top-level classes
requiring, using, and accepting as arguments "more inner" classes and
interfaces in the relevant namespace:
Zend_Acl ==> Zend_Acl_Resource_Interface, Zend_Acl_Role_Interface,
Zend_Acl_Role_Registry, Zend_Acl_Assert_Registry...
Regard, Stan Vassilev
Stan, ZF doesn't use namespaces yet. This is not namespaced code. Namespaced code requires different convention (http://framework.zend.com/wiki/display/ZFPROP/Naming+conventions+for+2.0+-+Matthew+Ratzloff).
In namespaced code there cannot be class Interface in namespace Zend\Acl\Role. There must be class RoleInterface in Zend\Acl namespace. Similary class Zend_Acl become Acl in Zend\Acl namespace. So look at the code with namespace-eyes. Classes Zend_Acl, Zend_Acl_Resource_Interface, Zend_Acl_Role_Interface... will exist in one namespace.
Every concrete plugins extending Zend\Controller\AbstractPlugin may exists in namespace Zend\Controllers\Plugins. Classes in Zend\Controller may not use classes in Zend\Controllers\Plugins (more abstract/common may not use concrete plugins), but plugins in Zend\Controllers\Plugins depends on classes in Zend\Controller. The "dependency-direction" should be one way.
DG.