有很多篇文章描述了如何在PHP-5.3中使用命名空间+我对use
语句中的约定特别感兴趣。
大多数文章都没有指出,use
可以引用命名空间或类。所以要在PSR-0位置引用我的类Foobar / Helper / Helper.php我可以这样做:
use \Foobar\Helper; // This is a namespace
class Whatever {
...
Helper\Helper::MyHelperMethod();
或者这个:
use \Foobar\Helper\Helper; // This is a class
class Whatever {
...
Helper::MyHelperMethod();
我没有看到他们在每个use
声明中使用的文档,这通常会导致猜测。
那么,使用一种方法或另一种方法是不好的做法吗?或者也许混合概念?或者它可能只是人们很少记录的事情之一?
或许我只是误解了整个问题?
答案 0 :(得分:4)
如果您有一个名称空间\Foobar\Helper
,那么
use \Foobar\Helper;
允许您使用\Foobar\Helper
作为命名空间限定符从Helper
命名空间访问所有类。这条线
use \Foobar\Helper\Helper;
使您可以在没有命名空间限定符的情况下更好地控制要访问的类。另一方面,在开发过程中保持use
声明与代码同步非常繁琐。第三方面,它将服务器作为文档中存在的依赖项的文档。
要区分use
语句是指名称空间还是类,Eclipse PDT等IDE会有所帮助。
答案 1 :(得分:2)
use
的重点是减少重复键入相同的完全限定类名。它允许您生成更短,更易读的代码。这取决于您的情况,这是编写代码的最可读方式。如果您只需要命名空间中的一个类,则可以直接对其进行别名。如果您需要来自一个命名空间的很多类,那么最好只对命名空间进行别名。如果来自不同命名空间的多个类被类似地命名,那么如果您只对命名空间进行别名,则可以使代码更清晰。这完全取决于你和情况。