thinkphp 5

下载安装

https://www.kancloud.cn/manual/thinkphp5/118006
下载安装 https://getcomposer.org/Composer-Setup.exe
使用阿里镜像

  1. composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/

进入 phpstudy 的 www 路径下,打开 cmd,运行如下命令安装 thinkphp 5.1.x 最新版

  1. composer create-project topthink/think=5.1.* tp5.1 --prefer-dist

image.png
访问 http://127.0.0.1/tp5.1/public/ 可以看到安装成功
image.png

url 解析规则

thinkphp 5 url 解析规则如下

http://servername/public/index.php/模块/控制器操作/参数/值

可以直接访问 http://127.0.0.1/tp5.1/public/ 或者 http://127.0.0.1/tp5.1/public/index.php 访问 thinkphp 首页
image.pngimage.png

url 规则解析

  • index.php 为 thinkphp 的入口文件,在 public 目录下
  • 模块在 application 目录下
  • 控制器在 application 下的 controller 目录下,一个 php 文件就是一个控制器(文件首字母大写;控制器可以理解为类)
  • 操作可以理解为类中的方法
  • 参数可以理解为方法中的变量名
  • 值就是变量中传入的值

可以理解一下官方的目录
在 thinkphp 源代码 application\index\controller\Index.php中存在一个方法,该方法的作用是传参 name 然后打印 name 的值

  1. public function hello($name = 'Thinkphp5')
  2. {
  3. return 'hello,' . $name;
  4. }

image.png
那么,调用的方法应该是访问[http://127.0.0.1/tp5.1/public/index.php/index/index/hello/name/shley](http://127.0.0.1/tp5.1/public/index.php/index/index/hello/name/shley)
image.png

命名空间

如果要自建模块的话,必须要加入命名空间

  • app 代表 application
  • index 表示模块
  • controller 表示这是一个控制器

image.png

thinkphp 5 的 url 传参模式访问

http://127.0.0.1/tp5.1/public/index.php?s=index/index/hello/name/shley
需要在程序的入口处(http://127.0.0.1/tp5.1/public/index.php)添加 ?s=然后后面跟模块/控制器/类/方法/参数/参数值
image.png

模块(module)设置

官方给出的模块设置目录结构如下
image.png
配置模块的文件位于 config\app.php
image.png

绑定模块

配置方法:在public\index.php中配置

  1. // 执行应用并响应
  2. // 例如配置:Container::get('app')->bind('index')->run()->send();
  3. Container::get('app')->run()->send();

效果:在 url 访问时可以省略模块路径
注意:在多模块的情况下可能导致其他模块(没有被绑定的模块)无法访问

空模块(默认模块)

配置方法:在 config\app.php 中配置

  1. // 默认的空模块名
  2. 'empty_module' => '',

效果:当用户访问不存在的模块时,可以重定向到指定模块
注意:只有在多模块开启,且没有绑定模块的请款下生效

单一模块

配置方法:在 config\app.php 中配置

  1. // 是否支持多模块
  2. 'app_multi_module' => true,

效果:可以删除所有的模块层级,直接创建 controller 然后加类即可,访问也是如此

环境变量

thinkphp 提供了一个类来获取环境变量
使用方法

  1. use think\facade\Env;
  2. ...
  3. return Env::get('root_path')

代码
image.png
效果
image.png
image.png