# Namespace resolution rules has been changed?

- Thread: https://externals.io/message/41971
- Original archive: https://news-web.php.net/php.internals/41971
- Started by David Grudl on 2008-11-17T11:15:03+00:00
- Messages: 2
- Reply by email to internals@lists.php.net
- More for agents: search with https://externals.io/search.md?q={query} · JSON API at https://externals.io/api · documentation at https://externals.io/llms.txt

---

## #41971 — David Grudl — 2008-11-17T11:15:03+00:00

URL: https://externals.io/message/41971#41971

> > […]
rules
> > […]
with \,
> > […]
classes in
> > […]
If you
> > […]
 >
 > 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.

---

## #41978 — Stan Vassilev | FM — 2008-11-17T13:51:19+00:00

URL: https://externals.io/message/41971#41978 · In reply to: #41971

> > […]
>
>
> 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.

I've checked that wiki page before, and I'm following with interest how they 
end up naming those, but that changes nothing.

Today, Zend_Acl uses Zend_Acl_Resource_Interface.

Tommorow, Zend\Acl uses Zend\Acl\ResourceInterface (or similar).

The fact is, PHP frameworks and especially Zend use plenty of factories and 
facade classes, which by definition reach into inner-more classes and 
provide simplified paradigm to the "outside world".
The Interface and Exception classes won't stay like this, but they'll still 
be inside a subnamespace.

Regards, Stan Vassilev
