ThinkPHP 是免费开源的,敏捷web 应用开发的程序框架。

主要特性

  1. OMR 组件独立
  2. 事件系统
  3. 支持容器 invoke 回调
  4. 模板引擎
  5. SESSION 机制
  6. 缓存及日志支持多通道
  7. 引入 Filesystem 组件
  8. 支持 Swoole 以及协程

安装

安装稳定版

如果第一次安装,切换到web根目录

1
composer create-project topthink/think tp

如果是之前已经安装过,则可以进入根目录进行 更新

1
composer update topthink/framework

更新操作会删除 thinkphp 目录并重新下载安装新版本,但不会影响 app 目录,因此不要在核心框架目录添加任何应用代码或类库。

开启调试模式

应用默认是部署模式,如需开启调试模式,可以在 /.env 环境文件,修改 APP_DEBUG 的值

在代码中打开调试

1
2
ini_set("display_errors", "On");//打开错误提示
ini_set("error_reporting",E_ALL);//显示所有错误

测试运行

运行

1
php think run

然后在浏览器中输入地址

1
http://localhost:8000/

如果 8000 端口被占用,则可以指定某个端口

1
php think run -p xxx

实际部署中,应该绑定域名到 public 目录

开发规范

命名规范

  1. 类(包含接口)文件采用 首字母大写 驼峰法命名,类名保持与文件名一致
  2. 方法名,属性名使用首字母小写 的驼峰法。
  3. 常量以大写字母和下划线命名,如 APP_PATH
  4. 配置参数以小写字母和下划线命名, 如 url_route_on
  5. 数据表和字段同样以小写字母和下划线命名,如 think_user

目录结构

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
www WEB部署根目录或子目录 /

/app/   应用目录
/app/controller/ 控制器目录
/app/model/ 模型目录
/app/common.php 公共函数文件
/app/event.php 事件定义文件

/config  配置目录
/config/app.php 应用配置
/config/cache.php 缓存配置
/config/console.php 控制台配置
/config/database.php 数据库配置
/config/cookie.php Cookie.php 配置
/config/session.php Session配置
/config/view.php 视图配置

/view 视图目录
/route  路由定义目录
/route/route.php 路由定义文件

/public WEB目录(对外访问)
/public/index.php 入口文件
/public/router.php 快速测试文件
/public/.htaccess 用于 apache 的重写

/extend 扩展类库目录
/runtime 应用的运行时目录 (可写,可定制)
/vendor Composer类库目录
/composer.json Composer定义文件
/LICENSE.txt 授权说明文件
/README.md 
/think  命令行入口文件

配置定义

可以直接在相应的全局配置或应用配置中增加或修改配置参数,如果你要增加额外的配置文件,直接放在配置目录即可(文件名小写)。

由于架构原因,下面的配置只能在环境变量中修改

配置参数 描述
app_debug 应用调试模式
config_ext 配置文件后缀

获取配置参数

获取环境变量

1
Env::get('database.username');

可以直接在配置文件中使用环境变量函数进行本地环境和服务器环境的自动配置,如:

1
2
3
return [
    'hostname'=>Env::get('hostname','127.0.0.1'),
];

get 的定义方法

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
public function get(string $name = null, $default=null){
    if(is_null($name)){
        return $this->data;
    }

    $name=strtoupper(str_replace('.','_',$name));
   if(isset($this->data[$name])) {
    $result=$this->data[$name];

    if(is_string($result) && isset($this->convert[$result])){
        return $this->convert[$result];
    }
    return $result;
   }

return $this->getEnv($name,$default);
}

使用 Config 类, use think\facade\Config;

1
2
3

// 获取 config/app.php 文件的配置
Config::get('app');

架构

请求流程

HTTP 请求流程,从用户发起请求到响应输出,大致如下

  1. 载入 Composer 的自动加载 autoload 文件
  2. 实例化系统应用基础类 think\App
  3. 获取应用目录等相关路径信息
  4. 加载全局的服务提供 provider.php 文件
  5. 加载环境变量文件 .env 和全局初始化文件
  6. 判断应用模式
  7. 注册异常处理 …
  8. 路由检测
  9. 执行数据验证
  10. 获取控制器实例
  11. 执行响应对象的send 方法输出
  12. 写入当前请求的日志信息

模板引擎

模板文件中可以使用一些特殊的模板标签,这些标签的解析通常由模板引擎负责实现。 新版不再内置 think-template 模板引擎,如需使用,需要安装 think-view 扩展库。