ThinkPHP有非常多的功能库,我的学习策略很明确:不贪多求全,只掌握最核心的20%功能,解决80%的业务需求。所有学习都围绕一个目标:够用就行。遇到复杂问题时,再具体学习对应的内容。
作为ThinkPHP学习的第一篇文章,本篇文章将记录ThinkPHP基础内容的学习,包括:安装、目录结构与配置。
一、安装
ThinkPHP 8.x 要求 PHP 的版本要大于等于 8.0.0。
1、安装 Composer
Composer 是 PHP 用来管理依赖(dependency)关系的工具。可以在自己的项目中声明所依赖的外部工具库(libraries),Composer 会帮你安装这些依赖的库文件。稍后会使用 Composer 来安装 ThinkPHP。
在 phpStudy 中安装 Composer 是非常简单的,只需要在软件管理中找到它,然后点击安装即可。我这里选择的是可以安装的最新的 2.5.8 版本。
2、安装稳定版
第一次安装,在命令行下面,切换到WEB根目录下面并执行下面的命令:
composer create-project topthink/think 应用名称
该命令将创建应用根目录,目录名称就是应用名称。
如果之前已经安装过 8.0 版本,那么切换到该应用根目录下面,然后执行下面的命令进行更新:
composer update
在 phpStudy 中,点击 网站->管理->composer,会弹出 composer设置 对话框,它会自动选中当前安装的 composer 版本,然后点击 “确认” 按钮,就会打开命令行界面,且该命令行界面已经切换到WEB根目录下。
在打开的命令行界面中,我们输入安装 ThinkPHP 命令,创建第一个应用,应用命名为:first_tp:
composer create-project topthink/think first_tp
3、开启调试模式
应用默认是部署模式,在开发阶段,通过修改环境变量APP_DEBUG开启调试模式,上线部署后切换到部署模式。
通过 create-project 安装后在根目录会自带一个.example.env文件(环境变量示例),我们需要将该文件更名为 .env 文件并根据要求进行修改,该示例文件已经开启调试模式。所以我们现在需要做的就是将该文件更名为 .env 文件就可以了。
4、测试运行
现在要做最后一步来是验证能否正常运行。该步操作还是在命令行中执行,具体如下:
cd first_tp # 首先进入 ThinkPHP 应用根目录
php think run # 执行该命令启动 ThinkPHP 应用
执行完成命令后,会在启动消息中看到服务器的访问地址,默认为:http://localhost:8000。访问该地址,如果看到了欢迎页面,那证明安装成功了。
也可以通过 -p 参数来更改默认启动的端口号:
php think run -p 端口号
注意:在实际部署中,需要绑定域名访问到 ThinkPHP 应用根目录下的 public 目录。
在 ThinkPHP 官网文档中,提供了关于 ThinkPHP 的开发规范,关于开发规范的内容在本文中就不做记录了,可以通过官网 开发规划 进行查看。
二、目录结构
ThinkPHP 8.0 版本开始支持多应用模式部署,所以实际的目录结构取决于采用的是单应用还是多应用模式,默认安装后的目录结构就是一个单应用模式。本文将记录单应用模式。下面我们一起来看下单应用模式的目录结构。
www WEB部署目录(或者子目录)
├─app 应用目录
│ ├─controller 控制器目录
│ ├─model 模型目录
│ ├─ ... 更多类库目录
│ │
│ ├─common.php 公共函数文件
│ └─event.php 事件定义文件
│
├─config 配置目录
│ ├─app.php 应用配置
│ ├─cache.php 缓存配置
│ ├─console.php 控制台配置
│ ├─cookie.php Cookie配置
│ ├─database.php 数据库配置
│ ├─filesystem.php 文件磁盘配置
│ ├─lang.php 多语言配置
│ ├─log.php 日志配置
│ ├─middleware.php 中间件配置
│ ├─route.php URL和路由配置
│ ├─session.php Session配置
│ ├─trace.php Trace配置
│ └─view.php 视图配置
│
├─view 视图目录
├─route 路由定义目录
│ ├─route.php 路由定义文件
│ └─ ...
│
├─public WEB目录(对外访问目录)
│ ├─index.php 入口文件
│ ├─router.php 快速测试文件
│ └─.htaccess 用于apache的重写
│
├─extend 扩展类库目录
├─runtime 应用的运行时目录(可写,可定制)
├─vendor Composer类库目录
├─.example.env 环境变量示例文件
├─composer.json composer 定义文件
├─LICENSE.txt 授权说明文件
├─README.md README 文件
├─think 命令行入口文件
默认安装后,app目录下会包含下面的文件。
├─app 应用目录
│ │
│ ├─BaseController.php 默认基础控制器类
│ ├─ExceptionHandle.php 应用异常定义文件
│ ├─common.php 全局公共函数文件
│ ├─middleware.php 全局中间件定义文件
│ ├─provider.php 服务提供定义文件
│ ├─Request.php 应用请求对象
│ └─event.php 全局事件定义文件
BaseController.php、Request.php 和 ExceptionHandle.php 三个文件是系统默认提供的基础文件,位置可以随意移动,但注意要同步调整类的命名空间。如果不需要使用 Request.php 和 ExceptionHandle.php文件,或者要调整类名,记得必须同步调整 provider.php 文件中的容器对象绑定。
provider.php 服务提供定义文件只能全局定义,不支持在应用下单独定义。
三、配置
对于单应用模式来说,配置文件和目录很简单,根目录下的 config 目录下面就是所有的配置文件。每个配置文件对应不同的组件,当然也可以增加自定义的配置文件。
├─config(配置目录)
│ ├─app.php 应用配置
│ ├─cache.php 缓存配置
│ ├─console.php 控制台配置
│ ├─cookie.php Cookie配置
│ ├─database.php 数据库配置
│ ├─filesystem.php 文件磁盘配置
│ ├─lang.php 多语言配置
│ ├─log.php 日志配置
│ ├─middleware.php 中间件配置
│ ├─route.php URL和路由配置
│ ├─session.php Session配置
│ ├─trace.php Trace配置
│ ├─view.php 视图配置
│ └─ ... 更多配置文件
│
单应用模式的 config 目录下的所有配置文件系统都会自动读取,不需要手动加载。如果存在子目录,需要通过 Config 类的 load 方法手动加载,例如:
// 加载config/extra/config.php 配置文件 读取到extra
\think\facade\Config::load('extra/config', 'extra');
可以直接在相应的全局或应用配置文件中修改或者增加配置参数,如果要增加额外的配置文件,直接放入配置目录即可(文件名小写)。