Hi!
As you know, with the new convention, the parser will not encounter T_STRING "Zend\Validate\Interface" but rather:
With namespaces, class name would not be Zend\Validate\Interface. Having namespaces, it would make much more sense to make last component a descriptive name, so you won't have code like this:
if($object instanceof Interface) { // wtf am I checking here?
...
As for how exactly that descriptive name should look - I guess each framework's developers that plan to support namespaces think about it hard right now. I know ZF developers do :)
Hi,
Fully agreed. Though since we (PHP users) will all be using namespaces together, it makes much more sense that we have a paradigm, recommendation for namespace usage that all frameworks will follow.
Maybe the ZF, Agavi, CI, CakePHP etc. authors should get together and craft a single recommendation list for people to use.
It's not just a matter of consistency, it's a matter of makming the language work well with the recommended scenario and use patterns of namespaces.
Two things are obvious:
1) What worked with underscores won't work with namespaces.
2) What scenario above with "instanceof Interface" isn't very likely. Why? Well imagine you want to use 5 classes in namespace foo\bar, called A, B, C, D, E (ex. foo\bar\A). In most any language with packaging system, to flatten the space you simply do this:
use foo\bar\*;
$a = new A();
$b = new B();
...
In PHP, due to lack of packaging system and knowledge of the user resources at parse time, instead we're painfully explicit:
use foo\bar\A;
use foo\bar\B;
use foo\bar\C;
use foo\bar\D;
use foo\bar\E;
$a = new A();
$b = new B();
Which makes this usage pattern with aliases much more likely to see:
use foo\bar as fb;
$a = new fb\A();
$b = new fb\B();
So your example above would rather be:
use Zend\Validate as ZV;
... instanceof ZV\Interface;
And this is why it's worth it to arrive at a single list of recommendations for namespace usage, and see what works there and what might not work, and tweak the language for it.
Regards,
Stan Vassilev