Php 应该";使用「;语句通常引用[完全限定]类或命名空间?

Php 应该";使用「;语句通常引用[完全限定]类或命名空间?,php,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

有很多文章描述了如何在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
语句中使用的文件包,这通常会导致猜测

那么,使用一种方法还是另一种方法是不好的做法?或者混合这些概念?或者这只是人们很少记录的事情之一


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

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

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

use \Foobar\Helper\Helper;
使您能够在不使用命名空间限定符的情况下更好地控制要访问的类。另一方面,在开发过程中保持
use
声明与代码同步是相当繁琐的。第三方面,它将服务器作为文件中存在哪些依赖项的文档


为了区分
use
语句是引用名称空间还是类,Eclipse PDT之类的IDE会有所帮助。

use的目的是减少重复键入相同的完全限定类名。它允许您生成更短、更可读的代码。这取决于您的情况,这是编写代码的最具可读性的方式。如果只需要命名空间中的一个类,则可以直接为其别名。如果您需要从一个名称空间中获得许多类,那么最好只在名称空间中使用别名。如果来自不同名称空间的多个类具有相似的名称,那么如果您仅将别名添加到名称空间,则可以使代码更清晰。这完全取决于你和情况

如果两者都能工作,我认为这取决于您是想从名称空间中只获取一个类,还是多个类。如果有很多,那么继续包含整个名称空间,否则只会造成混乱,可能会减慢速度;两者都很好。我猜其他人都在使用IDE,告诉他们别名是用于类还是用于命名空间,因此不需要记录它。如果我只是用编辑器查看该文件,就没有什么线索了。这让我不确定人们是如何使用“use”的。IDE的优点很好。我倾向于不使用IDE,因此依赖于人们在代码中留下的文档,这些文档现在往往很少(大概是因为他们使用IDE)。事实上,类可以以这种方式别名,这对我来说是新的。我一直认为它只是一个可以“使用”和/或别名的名称空间,而不是一个完全限定的类名。我找到的所有教程都没有一个简单的语句来解释这一点。生活和学习:-)