https://s3-us-west-2.amazonaws.com/secure.notion-static.com/866dd36c-d4d7-4be0-a8e2-a68c372baaa1/rId20.png

前言

将近一个月的期末预习,憋死了,昨天考完,算是半解放了,终于又可以愉快的玩耍了,就在昨天刚考完java出考场,就出了一个thinkphp5的牛逼RCE,12月份刚出了一个洞,现在又出了一个,想着复习完后要学一学这个框架,下面是学习笔记。

快速入门:https://www.kancloud.cn/thinkphp/thinkphp5_quickstart/478280 完全开发手册:http://www.php.cn/course/165.html

基础

安装

Composer安装和更新

curl -sS <https://getcomposer.org/installer> | php
mv composer.phar /usr/local/bin/composer

web目录
composer create-project topthink/think=5.0.*  tp5  --prefer-dist

如果之前使用Composer安装的话,首先切换到你的tp5目录,然后使用下面的命令更新框架到最新版本(注意因为缓存关系,composer不一定是及时更新的):

composer update

目录结构

tp5
├─application     应用目录
├─extend          扩展类库目录(可定义)
├─public          网站对外访问目录
├─runtime         运行时目录(可定义)
├─vendor          第三方类库目录(Composer)
├─thinkphp        框架核心目录
├─build.php       自动生成定义文件(参考)
├─composer.json   Composer定义文件
├─LICENSE.txt     授权说明文件
├─README.md       README 文件
├─think           命令行工具入口

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/4925be32-5b44-4700-8dc0-c987680718fe/rId24.png

image.png

├─application           应用目录(可设置)
│  ├─index              模块目录(可更改)
│  │  ├─config.php      模块配置文件
│  │  ├─common.php      模块公共文件
│  │  ├─controller      控制器目录
│  │  ├─model           模型目录
│  │  └─view            视图目录
│  │
│  ├─command.php        命令行工具配置文件
│  ├─common.php         应用公共文件
│  ├─config.php         应用配置文件
│  ├─tags.php           应用行为扩展定义文件
│  ├─database.php       数据库配置文件
│  └─route.php          路由配置文件

核心框架目录的结构如下:
├─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          框架引导文件

二、URL跟路由

URL访问

URL访问
ThinkPHP采用单一入口模式访问应用,对应用的所有请求都定向到应用的入口文件,系统会从URL参数中解析当前请求的模块、控制器和操作,下面是一个标准的URL访问格式:

<http://server/module/controller/action/param/value/>...)
<http://domainName/index.php/模块/控制器/操作方法>
其中index.php就称之为应用的入口文件(注意入口文件可以被隐藏,后面会提到)。

三、请求和响应

1)请求对象

参数传入