最后更新 : 2013-12-18 11:11:38
选择语言 :

MyQEE 系统相关规范和约定

目录规范

根目录中目录相关用途:

目录 用途
bin 命令行工具
core 核心类库
data 文件数据存放目录
data/log 文件Log存放目录
drivers 驱动目录,比如数据库驱动、缓存驱动,可通过 Composer 自定义安装、删除
libraries 第三方类库目录,比如 libraries/myqee/develop/ 目录,可通过 Composer 自定义安装、删除
manual 文档目录,可执行 manual/bin/re-create 重新生产HTML文档,文档将全部生成在 manual/html/ 目录中
modules 模块目录,比如数据库模块,缓存模块,Session模块等,可通过 Composer 自定义安装、删除
projects 项目目录,每个项目一个文件夹,比如 projects/default 默认项目
team-library 团队类库,也可作为自己的私有类库使用,此类库默认会加载,优先级高于Core类库
wwwroot 站点wwwroot目录,可把Apache、Nginx等站点的根目录设置到这个目录上
wwwroot/assets 站点的静态资源文件目录,建议用另外一个域名配置一个站点根目录指定到这个目录
config.php 主配置文件,所有请求都会访问,可通过项目、类库的 config.php 的配置进行个性化配置
index.php 入口文件
composer.json Composer 配置

子目录定义在类库目录(比如 projects/default/, team-library/, core/, libraries/myqee/develop/ 等目录)下的目录是如下定义的:

子目录 后缀 用途
classes .class.php 类库目录
controllers .controller.php 普通控制器
controllers-admin .controller.php 后台控制器
controllers-system .controller.php 系统内部调用控制器
controllers-bin .controller.php 命令行控制器
models .models.php 模型目录
orm .orm.php ORM目录
i18n .lang 语言包目录,例如 zh-cn.lang
guide .md 文档目录,用语言文件夹分开,例如 guide/zh-cn/readme.md 表示中文的 readme.md 文档

文件规范

classes, models, controller, orm 中若对象含有下划线 _,则文件存放在相应目录中,文件夹及文件名都是小写,例如:

  • 类文件:MyTest_Lib_abc 应当存放在 classes/mytest/lib/abc.class.php 文件中。
  • 模型:Model_M_Test 应当存放在 models/m/test.model.php 文件中。
  • 控制器:Controller_Abc_Def_Ghi 当存放在 controllers/abc/def/ghi.controller.php 文件中。

核心类库的类前缀为 Core_,类库的前缀为 Library_[a-zA-Z0-9]+_[a-zA-Z0-9]+_ 的格式,例如 Library_MyQEE_Admin_,模块的前缀为 Module,驱动的前缀为 Driver_

但是在实际项目开发中,使用所有的类均无需加任何前缀,你写的代码也无需加前缀调用,除非您开发第三方类库、模块、驱动。比如,核心类库中 Core_Form 方法,你在调用的时候不需要写成 Core_Form::input('test'),直接 Form::input('test') 即可。

类的命名规范

以下划线分割为目录,文件大小写于类名称保持一致,后缀为 .class.php,例如:

  • MyTest 应该存放在 classes/mytest.class.php 文件
  • My_Test 应该存放于 classes/my/test.class.php 文件

例如:

class Mytest 
{
    public function __construct(){

    }
    public function abc(){

    }
    public static function test(){

    }
}

存放在 classes/mytest.class.php 文件中,调用方法:

$mytest = new Mytest();
$mytest->abc();

// 静态调用
Mytest::test();

同样支持扩展到另外一个对象,比如:

class Database extends Core_Database {

}

class Member extends ORM_Memeber_Data {

}

class Member extends Model_Member {

}

控制器的命名规范

控制器对象名称必须以 Controller_ 开头。

  • 一般控制器存放于 controllers 目录,扩展到 Controller
  • 命令行的控制器,存放在controllers-shell目录,扩展到 Controller_Shell
  • 后台的控制器,存放在controllers-admin目录,扩展到 Controller_Admin
  • 系统内部调用控制器,存放在controllers-system目录,扩展到 Controller

例如控制器 Controller_Test 是存放于 controllers 目录的 test.controller.php 文件,内容如下:

<?php
Controller_Test extends Controller
{
    public function action_abc()
    {
        echo 'test';
    }
}

以上可通过 http://yourhost/test/abc 访问到 action_abc 方法。

文件夹支持: 例如 Controller_My_Test 控制器:

<?php
Controller_My_Test extends Controller
{
    public function action_abc()
    {
        echo 'test';
    }
}

文件应当存放在 controllers/my/test.controller.php 文件里。 以上控制器可通过 http://yourhost/my/test/abc 访问到。

另外,控制器可继承另外一个控制器,例如:

<?php
Controller_Test extends Controller_Ajax
{
    public function action_test()
    {
        echo 'test';
    }
}

模型文件的命名规范

模型的对象名称必须以 Model_ 开头,存放在 models 目录,文件后缀为 .model.php ,推荐扩展到 Model 类库上,其它规则同上。 例如:

class Model_Member extends Model {
    /**
     * 定义此model采用的默认数据库配置名
     */
    public $database = 'default';

    public function test() {

    }
}

存放在 models/member.model.php 文件中,调用方法:

$m_member = new Model_Member();
$data = $m_member->test();

模块也可扩展到ORM上,例如:

class Model_Member extends ORM_Member_Finder {
    public function test() {

    }
}