ThinkPHP5.1学习--模块设计

一.目录结构

  1. ThinkPHP5.1 默认是多模块架构,也可以设置为单模块操作;

  2. 所有模块的命名空间以 app 这三个字母作为根命名空间(可通过环境变量更改);

  3. 手册摘入的结构列表:

  4. ThinkPHP5.1学习--模块设计

  5. 模块下的类库文件命名空间统一为:app\模块名;

  6. 比如:app\index\controller\Index

  7. 多模块设计在 URL 访问时,必须指定响应的模块名,比如:public/test/abc/eat;

  8. 如果你只有 test 这一个模块时,你可以绑定这个模块,从而省略写法;

  9. 打开 public/index.php 的文件,追加一个方法:
    Container::get(‘app’)->bind(‘test’)->run()->send();

  10. 此时,URL 调用就变成了:public/abc/eat;多模块时,则其它无法访问;

  11. 如果你的应用特别简单,只有一个模块,一个控制器,那改写下追加的方法:
    Container::get(‘app’)->bind(‘test/abc’)->run()->send();

  12. 此时,URL 调用就变成了:public/eat;得到了极简;其它控制器则无法访问;

二.空模块

  1. 可以通过环境变量设置空目录,将不存在的目录统一指向指定目录;
  2. 在 config 目录下的 app.php 修改:
    // 默认的空模块名
    ‘empty_module’ => ‘index’,

3.空模块只有在多模块开启,且没有绑定模块的情况下生效;
ThinkPHP5.1学习--模块设计

三.单一模块

  1. 如果你的应用只有一个模块,那可以直接设置单模块;
  2. 在 config 目录下的 app.php 修改:
    // 是否支持多模块
    ‘app_multi_module’ => false,
  3. 目录结构可变为,手册摘入:
  4. URL 地址 public/index/one,即:控制器/操作;
  5. 单一模块的命名空间也变更为:app/controller;
    四.环境变量
  6. ThinkPHP5.1 提供了一个类库 Env 来获取环境变量;
    return Env::get(‘app_path’);
    ThinkPHP5.1学习--模块设计