我们最近一直在使用 OO 重写 PHP 应用程序的模型代码。我们已经完成了类,并且我们包含了命名空间(以 Project\Level1\Level2 或其他形式)。由于这是一个已经构建的应用程序,因此有很多类。我们正在使用自动加载器,以便于加载类,这很棒。但这就是麻烦所在。
我们可能有 300 个页面散布在整个应用程序中,所有这些页面一开始都需要一个 PHP 文件(一种引导脚本)。该引导文件中需要自动加载器脚本。
现在,我们的大多数页面都将使用至少一个但可能是多个类。我们知道这里有两种选择:
//either call the classes using qualified names
$person = new Project\Person;
//or include the "use" keyword on every page, so we can alias the classes for ease of use
use Project\Person as Person;
$person = new Person;
但麻烦的是,我们真的不想在应用程序的每个页面上都这样做:
require_once('../php/bootstrap.php');
use Project\Person\ as Person,
Project\Address\ as Address,
Project\Group\ as Group
Project\CustomField\ as CustomField;
$person = new Person;
$address = new Address;
我们尝试了,在引导文件中包含我们所有类的 use 关键字,但根据 PHP 手册,“导入规则是基于每个文件的,这意味着包含的文件不会继承父文件的导入规则。”
似乎在我们的应用程序的每个页面上都包含这些庞大的 use 语句会造成比其价值更多的麻烦。如果我们在一页上使用 15 个类怎么办?那么使用语句将是巨大的。
我的问题是:是不是太麻烦了?我们在使用命名空间方面是正确的,还是在 PHP 中不是很有帮助?现在知道我们要做什么,我们做得对吗?我们缺少什么吗?我们应该一直调用具有完全限定名称的类吗?
(这是我在 stackoverflow 上的第一个问题,所以如果我以后需要对我的问题做一些不同或更好的事情,请告诉我)