“use”语句是否应该引用[完全限定的]类或命名空间?

时间:2013-10-27 17:58:58

标签: php

有很多篇文章描述了如何在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声明中使用的文档,这通常会导致猜测。

那么,使用一种方法或另一种方法是不好的做法吗?或者也许混合概念?或者它可能只是人们很少记录的事情之一?

或许我只是误解了整个问题?

2 个答案:

答案 0 :(得分:4)

如果您有一个名称空间\Foobar\Helper,那么

use \Foobar\Helper;

允许您使用\Foobar\Helper作为命名空间限定符从Helper命名空间访问所有类。这条线

use \Foobar\Helper\Helper;

使您可以在没有命名空间限定符的情况下更好地控制要访问的类。另一方面,在开发过程中保持use声明与代码同步非常繁琐。第三方面,它将服务器作为文档中存在的依赖项的文档。

要区分use语句是指名称空间还是类,Eclipse PDT等IDE会有所帮助。

答案 1 :(得分:2)

use的重点是减少重复键入相同的完全限定类名。它允许您生成更短,更易读的代码。这取决于您的情况,这是编写代码的最可读方式。如果您只需要命名空间中的一个类,则可以直接对其进行别名。如果您需要来自一个命名空间的很多类,那么最好只对命名空间进行别名。如果来自不同命名空间的多个类被类似地命名,那么如果您只对命名空间进行别名,则可以使代码更清晰。这完全取决于你和情况。