为什么Yii框架中有这么多名称空间?

时间:2015-02-15 12:00:02

标签: php namespaces

我想创建自己的简单框架。我已经知道Codeigniter,现在我决定看看Yii框架,它在过去几年变得非常流行。

我理解PHP命名空间是如何工作的,但我很惊讶地发现在这个框架中几乎所有东西都在不同的命名空间中。例如,SiteController.php如下所示:

namespace app\controllers;

use Yii;
use yii\filters\AccessControl;
use yii\web\Controller;
use yii\filters\VerbFilter;
use app\models\LoginForm;
use app\models\ContactForm;

我认为可能有两个原因:

  1. 使用“composer”软件在正确的位置安装内容。
  2. 自动加载功能 - 这样我们就可以知道在哪里找到特定的课程。
  3. 至于#1 - 我对此并不感兴趣。至于#2 - 我想简化一些事情并创建一个“App”命名空间,然后创建“模型”,“控制器”等。

    这样可以,还是我错过了什么?从字面上对所有内容使用命名空间还有其他好处吗?

1 个答案:

答案 0 :(得分:0)

命名空间的主要原因是避免命名冲突。例如,在我目前正在处理的应用程序中,我有四个Process类 - 一个是我的,三个是Composer依赖。由于使用Zend方法(Library_Name_Class_Name)不实用,名称空间有助于指定要使用的类。这也意味着您可以命名您的库类,而不必担心与其他库的冲突。

正如您所说,帮助自动加载器知道存储类的位置也是一个好处。但是,这也可以通过强调的命名约定来实现。

一旦开始使用命名空间,您就会发现它们有多么有用,并且您不想再回到PHP 5.2!由于新项目应该为不早于5.4的PHP版本编写(在编写本文时),您可以立即开始使用名称空间。