我想创建自己的简单框架。我已经知道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;
我认为这可能有两个原因:
- 使用"composer"软件将东西安装在正确的位置
- 自动加载功能-这样我们就可以知道在哪里可以找到特定的类
至于#1——我对此不感兴趣。至于#2——我想简化事情,创建一个"应用程序"名称空间,然后创建"模型"、"控制器"等。
可以吗,还是我错过了什么?对所有事物都使用名称空间还有其他好处吗?
名称空间的主要原因是避免命名冲突。例如,在我目前正在开发的应用程序中,我有四个Process
类——其中一个是我的,三个是Composer依赖项。由于使用Zend方法(Library_Name_Class_Name
)非常困难,因此名称空间有助于指定要使用的类。这也意味着您可以命名库类,而不必担心与其他库发生冲突。
正如您所说,帮助自动加载器知道类存储在哪里也是一个好处。然而,使用带下划线的命名约定也是可能的。
一旦你开始使用名称空间,你就会发现它们有多有用,而且你不想回到PHP 5.2!由于新项目应该是为不早于5.4版本的PHP编写的(在编写时),您可以立即开始使用名称空间。