TP6安装及入门
安装

测试运行
打开安装的根目录,在地址栏输入 cmd 后按回车键。进入cmd界面。

然后输入 php think run 后按回车。

复制上图的地址,在浏览器地址栏输入,回车,显示下面的界面即成功。

开发规范
遵循规范很重要,下面图片在TP6的手册里可以看到。熟记。  上图框住的两点可以看下面这张图理解一下。 
单应用目录结构
TP6默认是单应用模式。
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 命令行入口文件
多应用目录结构
www WEB部署目录(或者子目录)
├─app 应用目录
│ ├─app_name 应用目录
│ │ ├─common.php 函数文件
│ │ ├─controller 控制器目录
│ │ ├─model 模型目录
│ │ ├─view 视图目录
│ │ ├─config 配置目录
│ │ ├─route 路由目录
│ │ └─ ... 更多类库目录
│ │
│ ├─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 视图配置
│
├─public WEB目录(对外访问目录)
│ ├─index.php 入口文件
│ ├─router.php 快速测试文件
│ └─.htaccess 用于apache的重写
│
├─extend 扩展类库目录
├─runtime 应用的运行时目录(可写,可定制)
├─vendor Composer类库目录
├─.example.env 环境变量示例文件
├─composer.json composer 定义文件
├─LICENSE.txt 授权说明文件
├─README.md README 文件
├─think 命令行入口文件
 要开启多应用,则必须使用composer安装多应用拓展才可以。
composer require topthink/think-multi-app
开启调试与配置文件
开启调试
开启调试模式会牺牲一些执行效率,但是可以提高开发排错的能力。
通过命令行安装的TP6,会自动在根目录生成一个 .example.env 文件,这个文件就是环境配置文件,只需要将该文件的名称改为 .env 调试模式即可生效。  刷新页面。  点开 .env 文件,查看里面的内容。  只需要把 APP_DEBUG 设为 false ,即可关闭调试模式。
开启调试模式的优势:
- 记录系统运行流程的执行过程;
- 显示错误和调试信息,并且开启日志记录;
- 模板修改可以及时生效,不会被缓存干扰;
- 发生异常时,显示异常信息;
另一种调试模式, 不如上面详细,但是也可以显示一些简要的错误信息。 开启方法:
- 关闭调试模式
APP_DEBUG = false ; - 打开根目录下的
config 文件夹下的 app.php 文件; - 将
show_error_msg 设为 true ;

配置文件
配置文件有两种:
.env 文件,适合本地config 文件夹下的php文件,有很多类型的配置
官方手册明确表示: .env 文件里的环境变量用于本地开发,部署到服务器后会被忽略 。
获取配置文件中的值
比如说在前面出现过的 Index.php 文件中获取 .env 文件中的值。 首先要先加载配置文件类,然后使用 get 方法获取。  在浏览器地址栏中输入 http://127.0.0.1:8000/index/get_config 回车,显示下图。  再比如说,要获取 config 文件夹下的 database.php 文件里的 hostname 的值。  使用get方法可以获取值,也可以使用has方法判断某种配置是否存在。
Env::has('database.hostname); //return boolean
两种配置文件的优先级
上面我们知道,有两种配置文件,还知道 .env 文件部署之后会被忽略掉。是怎么忽略掉呢?先看一下 config 文件夹下的 database.php 文件。
 然后看一下 database.php 文件的 env() 方法。  env() 方法是获取 .env 文件里面的环境变量的值,如果获取不到就使用默认值。
所以,在本地开发的时候, .env 文件优先级高于 Config 文件夹下的配置文件,但是当我们部署到服务器后, .env 文件被忽略掉, env() 方法也就获取不到 .env 文件里面的环境变量的值了,就会使用默认值。所以在部署后,Conifg 文件夹下的配置文件优先级高于 .env 文件。
我记得有个地方是判断当前的域名是否为 127.0.0.1 ,以此来判断是本地环境还是服务器环境。
URL访问模式
URL解析
TP框架很多操作是通过url来实现的。
http://serverName 是域名地址,比如127.0.0.1:8000或localhost/tp6/;index.php 是根目录下 public 文件夹下的入口文件;- 控制器是
app 目录下 controller 控制器目录下的控制器(一种php文件); - 操作是控制器里面的方法
单应用
http://serverName/index.php/控制器/操作/参数/值/参数/值...
多应用
http://serverName/index.php/应用/控制器/操作/参数/值/参数/值...
注意事项: 1.控制器的类名必须和控制器的文件名一样,否则报错(开发规范)。 2.访问控制器中的index操作可以不写在url上。
访问Index.php控制器里的index方法
http://127.0.0.1:8000/index.php/index

http://127.0.0.1:8000/index.php/index/index

上图可以看出,控制器里面的index方法是可以不写的。
访问Index.php控制器里的get_config方法
http://127.0.0.1:8000/index.php/index/get_config
 Index控制器内容 
URL兼容模式
一般很少用,加个 ?s= 即可。 
|