thinkphp 官网教程:https://sites.thinkphp.cn/1556331
ThinkPHP是一个免费开源的,快速、简单的面向对象的轻量级PHP开发框架,目前 thinkphp 总共给出 4 个官方手册:
执行过程
动态图演示:
一个典型的 Web MVC 流程:
示例:手把手编写PHP MVC框架实例教程--FastPHP
:https://www.jianshu.com/p/0635f0c7a5b6
:https://www.kancloud.cn/special/thinkphp5_quickstart
不能替代教程,而是作为工具参考,学习的话新手建议先阅读官方的 《 5.0入门系列教程 》
ThinkPHP V5.0 完全开发手册:https://www.kancloud.cn/manual/thinkphp5/118003
5.1 版本开始 ( 包括 5.1 ),官网不再提供下载版本,使用 Composer 或者 git 方式安装和更新。
获取 ThinkPHP 的方式很多,官方网站(http://thinkphp.cn)提供了稳定版本或者带扩展完整版本的下载。
官网的下载版本不一定是最新版本,git 版本获取的才是保持更新的版本。
thinkPHP 5.0 拆分为多个仓库,主要包括:
https://github.com/top-think/think
https://github.com/top-think/framework
thinkphp 5.1 安装:https://www.kancloud.cn/manual/thinkphp5_1/353948
thinkphp 6.0 安装:https://www.kancloud.cn/manual/thinkphp6_0/1037481
ThinkPHP 5.1 通过 git 安装步骤:https://www.kancloud.cn/manual/thinkphp5_1/353948
ThinkPHP5.1
主要分为应用和核心两个仓库,主要包括:
- 应用项目:https://github.com/top-think/think
- 核心框架:https://github.com/top-think/framework
6.0 版本开始,必须通过 Composer 方式安装和更新,无法通过 Git 下载安装。
无论采用什么方式获取的 ThinkPHP 框架,现在只需要做最后一步来验证是否正常运行。
我本地 网站根目录
在浏览器中输入地址:http://127.0.0.1/thinkphp_5_0_24_with_extend/public/index.php
浏览器显示如图,说明已经完成 ThinkPHP5 的安装!( 其实就是放到网站的根目录下 )
ThinkPHP5遵循PSR-2命名规范和PSR-4自动加载规范,并且注意如下规范:
.php
为后缀;User
、UserType
,默认不需要添加后缀,例如UserController
应该直接命名为User
;get_client_ip
;getUserName
;tableName
、instance
;__call
和 __autoload
;APP_PATH
和 THINK_PATH
;url_route_on
和url_convert
;think_user
表和 user_name
字段,不建议使用驼峰和中文作为数据表字段命名。应用类库的根命名空间统一为app(不建议更改,可以设置app_namespace
配置参数更改,V5.0.8
版本开始使用APP_NAMESPACE
常量定义);
例如:app\index\controller\Index
和app\index\model\User
。
请避免使用PHP保留字(保留字列表参见 PHP: 关键词列表 - Manual )作为常量、类名和方法名,以及命名空间的命名,否则会造成系统错误。
下载最新版框架后,解压缩到web目录下面,可以看到初始的目录结构如下:
project 应用部署目录
├─application 应用目录(可设置)
│ ├─common 公共模块目录(可更改)
│ ├─index 模块目录(可更改)
│ │ ├─config.php 模块配置文件
│ │ ├─common.php 模块函数文件
│ │ ├─controller 控制器目录
│ │ ├─model 模型目录
│ │ ├─view 视图目录
│ │ └─ ... 更多类库目录
│ ├─command.php 命令行工具配置文件
│ ├─common.php 应用公共(函数)文件
│ ├─config.php 应用(公共)配置文件
│ ├─database.php 数据库配置文件
│ ├─tags.php 应用行为扩展定义文件
│ └─route.php 路由配置文件
├─extend 扩展类库目录(可定义)
├─public WEB 部署目录(对外访问目录)
│ ├─static 静态资源存放目录(css,js,image)
│ ├─index.php 应用入口文件
│ ├─router.php 快速测试文件
│ └─.htaccess 用于 apache 的重写
├─runtime 应用的运行时目录(可写,可设置)
├─vendor 第三方类库目录(Composer)
├─thinkphp 框架系统目录
│ ├─lang 语言包目录
│ ├─library 框架核心类库目录
│ │ ├─think Think 类库包目录
│ │ └─traits 系统 Traits 目录
│ ├─tpl 系统模板目录
│ ├─.htaccess 用于 apache 的重写
│ ├─.travis.yml CI 定义文件
│ ├─base.php 基础定义文件
│ ├─composer.json composer 定义文件
│ ├─console.php 控制台入口文件
│ ├─convention.php 惯例配置文件
│ ├─helper.php 助手函数文件(可选)
│ ├─LICENSE.txt 授权说明文件
│ ├─phpunit.xml 单元测试配置文件
│ ├─README.md README 文件
│ └─start.php 框架引导文件
├─build.php 自动生成定义文件(参考)
├─composer.json composer 定义文件
├─LICENSE.txt 授权说明文件
├─README.md README 文件
├─think 命令行入口文件
如果是mac或者linux环境,请确保
runtime
目录有可写权限
5.0的部署建议是public
目录作为web目录访问内容,其它都是web目录之外,当然,你必须要修改public/index.php
中的相关路径。如果没法做到这点,请记得设置目录的访问权限或者添加目录列表的保护文件。
router.php用于php自带webserver支持,可用于快速测试
启动命令:php -S localhost:8888 router.php
5.0版本自带了一个完整的应用目录结构和默认的应用入口文件,开发人员可以在这个基础之上灵活调整。
上面的目录结构和名称是可以改变的,尤其是应用的目录结构,这取决于你的入口文件和配置参数。
由于ThinkPHP5.0的架构设计对模块的目录结构保留了很多的灵活性,尤其是对于用于存储的目录具有高度的定制化,因此上述的目录结构仅供建议参考。
ThinkPHP提供了灵活的全局配置功能,采用最有效率的PHP返回数组方式定义,支持惯例配置、公共配置、模块配置、扩展配置、场景配置、环境变量配置和动态配置。
对于有些简单的应用,你无需配置任何配置文件,而对于复杂的要求,你还可以扩展自己的独立配置文件。
系统的配置参数是通过静态变量全局存取的,存取方式简单高效。
配置功能由\think\Config
类完成。
路由功能由\think\Route
类完成。
由于ThinkPHP5.0
默认采用的URL规则是:
http://server/module/controller/action/param/value/...
路由的作用是简化URL访问地址,并根据定义的路由类型做出正确的解析。
新版的路由功能做了大量的增强,包括:
ThinkPHP5.0的路由支持三种方式的URL解析规则。
5.0的路由是针对应用而不是针对模块,因此路由的设置也是针对应用下面的所有模块,如果希望不同的模块区分不同的设置(例如某些模块需要关闭路由,某些模块需要强制路由等),需要给该模块增加单独的入口文件,并作如下修改:
// 定义项目路径
define('APP_PATH', __DIR__ . '/../application/');
// 加载框架基础文件
require __DIR__ . '/../thinkphp/base.php';
// 绑定当前入口文件到admin模块
\think\Route::bind('admin');
// 关闭admin模块的路由
\think\App::route(false);
// 执行应用
\think\App::run()->send();
V5.0.21+
版本开始,支持了路由解析缓存。
在配置文件中 设置开启
// 开启路由解析缓存
'route_check_cache' => true,
控制器定义
控制器初始化
前置操作
跳转和重定向
空操作
空控制器
多级控制器
分层控制器
Rest控制器
自动定位控制器
资源控制器
请求信息
输入变量
更改变量
请求类型
请求伪装
HTTP头信息
伪静态
方法注入
属性注入
参数绑定
依赖注入
请求缓存
新版的数据库进行了重构,主要特性包括:
新版的模型进行了重构,更加对象化操作,包括关联模型的重构,主要特性包括:
视图实例化
模板引擎
模板赋值
模板渲染
输出替换
主要讲述了如何使用内置的模板引擎来定义模板文件,以及使用加载文件、模板布局和模板继承等高级功能。
ThinkPHP内置了一个基于XML的性能卓越的模板引擎,这是一个专门为ThinkPHP服务的内置模板引擎,使用了XML标签库技术的编译型模板引擎,支持两种类型的模板标签,使用了动态编译和缓存技术,而且支持自定义标签库。其特点包括:
每个模板文件在执行过程中都会生成一个编译后的缓存文件,其实就是一个可以运行的PHP文件。
内置的模板引擎支持普通标签和XML标签方式两种标签定义,分别用于不同的目的:
标签类型 | 描述 |
---|---|
普通标签 | 主要用于输出变量和做一些基本的操作 |
XML标签 | 主要完成一些逻辑判断、控制和循环输出,并且可扩展 |
这种方式的结合保证了模板引擎的简洁和强大的有效融合。
调试模式
异常处理
抛出异常
Trace调试
变量调试
性能调试
SQL调试
远程调试
404页面
验证器
验证规则
错误信息
验证场景
控制器验证
模型验证
内置规则
静态调用
表单令牌
输入安全
数据库安全
上传安全
其它安全建议
函数
类库
行为
驱动
Composer包
SAE
标签扩展
ThinkPHP5.0支持Console
应用,通过命令行的方式执行一些URL访问不方便或者安全性较高的操作。
我们可以在命令行下面,切换到应用根目录,然后执行php think
,会出现下面的提示信息:
>php think
Think Console version 0.1
Usage:
command [options] [arguments]
Options:
-h, --help Display this help message
-V, --version Display this console version
-q, --quiet Do not output any message
--ansi Force ANSI output
--no-ansi Disable ANSI output
-n, --no-interaction Do not ask any interactive question
-v|vv|vvv, --verbose Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
Available commands:
build Build Application Dirs
clear Clear runtime file
help Displays help for a command
list Lists commands
make
make:controller Create a new resource controller class
make:model Create a new model class
optimize
optimize:autoload Optimizes PSR0 and PSR4 packages to be loaded with classmaps too, good for production.
optimize:config Build config and common file cache.
optimize:route Build route cache.
console
命令的执行格式一般为:
>php think 指令 参数
下面介绍下系统自带的几个命令,包括:
指令 | 描述 |
---|---|
build | 自动生成目录和文件 |
help | 帮助 |
list | 指令列表 |
clear | 清除缓存指令 |
make:controller | 创建控制器文件 |
make:model | 创建模型文件 |
optimize:autoload | 生成类库映射文件 |
optimize:config | 生成配置缓存文件 |
optimize:route | 生成路由缓存文件 |
optimize:schema | 生成数据表字段缓存文件 |
更多的指令可以自己扩展。
虚拟主机环境
Linux 主机环境
URL重写
配置参考
常量参考
助手函数
升级指导
更新日志