目录结构

目录结构

刚刚新建好的应用程序具有如下的目录结构:

如果创建应用程序时选择了不同的应用程序模板,那么目录结构看上去会有所不同。

顶层目录结构

应用程序顶层目录较多,每个目录的详细说明:

  • app
    保存应用程序主要代码的目录,包括控制器、模型、视图、表单、用户界面控件、助手等。

  • config
    保存应用程序的所有配置文件。

  • db
    保存应用程序的数据库脚本文件,通常是一些 .sql 文件。

  • doc
    保存应用程序的文档。

  • lib
    保存应用程序用到的第三方库文件,例如 Swift 邮件库。

  • log
    保存应用程序运行期间产生的日志文件。

  • modules
    保存应用程序的功能模块。每一个功能模块都有自己的控制器、模型等,相当于一个子应用程序。

  • public
    保存应用程序的入口文件,以及能够被浏览器访问的文件。部署时应该将网站根目录指向该目录。

  • scripts
    保存应用程序开发和维护时用到的脚本文件,WebSetup 的入口文件也在这个目录中。

  • tests
    保存应用程序的测试代码。

  • tmp
    保存应用程序运行时产生的临时文件。

app 子目录

上述目录中,app 目录中的子目录需要详细说明:

controller
这个目录保存了控制器的代码。每一个控制器文件的命名方式都是“控制器名_controller.php”,文件名一律全小写。例如 posts 控制器的对应文件是 controller/posts_controller.php。

事实上,QeePHP 的所有文件都是全小写文件名,这可以避免在 Linux/Unix 服务器上出现文件名大小写导致的错误。QeePHP 应用程序除了第三方库文件,其他文件也全部是小写文件名。

model

模型代码所在目录,model/behavior/ 目录中是模型的行为插件代码。模型文件的命名方式是“模型类名称.php“,文件名同样是全小写。

要注意的是如果模型类名称中包含下划线“_”,那么应该在 model 下建立相应的子目录来存储。例如模型的类名称是“Forum_Thread“,那么这个模型的文件名应该是 forum/thread.php。其完整路径就是 /app/model/forum/thread.php。

有关类名称和目录结构及文件名的关系,请参考开发指南相关章节。

view

应用程序视图文件所在目录。视图文件目录下有两个特殊目录: _elements 和 _layouts。分别用于存储视图片段文件和布局视图文件。有关这两个目录中文件的命名规则会在教程后续部分用到时说明。

除了两个特殊目录,视图目录下会有与每一个控制器同名的子目录。例如 posts 控制器对应的视图目录就是 view/posts/,该目录中的文件名则和控制器动作的名称一致。

控制器动作的解释请继续阅读本教程,会在 MVC 模式章节进行说明。

form

由于惯例上,QeePHP 应用中所有表单对象的类名称都是以 “Form_”开头,所以表单对象的文件都存储在该目录中。假设表单对象的名称是 Form_UserInfo,那么对应的文件就是 form/userinfo.php。

大部分表单还有自己的配置文件。配置文件和表单对象文件放置在一起,通常命名为“表单文件名_form.yaml”。例如 Form_UserInfo 表单的配置文件就是 form/userinfo_form.yaml。

但是QeePHP得表单模块我们觉得对于配置过于复杂,对于复杂的表单逻辑显得很无力,所以我们决定不使用它的表单模块功能。

control

用户界面控件是 QeePHP 中实现用户界面组件化的强大工具。大部分应用程序都会创建自己的用户界面控件。由于用户界面控件的类名称都是“Control_”开头,所以控件的代码都存储在该目录中。

如果控件名称是“Control_LatestPosts”,则对应文件是 control/latestposts.php。除了控件代码,控件的视图也可以存储在该目录中,通常命名为 control/latestposts_view.php。

helper

应用程序自己的助手类可以放在该目录中。类名称为“Helper_Text”的助手对应文件是 helper/text.php。