PHP 开发 ThinkPHP6 框架学习 一
文章目录
- 开发手册
- 一. MVC
- 二. 安装 composer
- 三. 下载安装tp6源码 与 视图
- 3.1 tp6 安装
- 3.2 视图安装
- 3.3 视图的理解
- 3.4 模板变量
- 3.5 视图应用
- 3.5.1 标签的运算符
- 3.5.2 模板函数
- 3.5.3 循环标签
- 3.5.4 volist 循环标签
- 3.5.5 if 判断标签
- 3.5.6 switch 判断标签
- 3.5.7 文件包含
- 四. 单应用多应用切换
- 五. 一些关键目录与文件
- 5.1 单应用模式目录
- 5.2 多应用模式目录
- 六. 系统环境配置
开发手册
https://www.kancloud.cn/manual/thinkphp6_0
一. MVC
model view controller
- 控制器:负责转发请求,处理请求
- 视图:图像界面设计
- 模型:功能算法等具体功能
二. 安装 composer
https://docs.phpcomposer.com/
https://www.phpcomposer.com/
三. 下载安装tp6源码 与 视图
3.1 tp6 安装
https://packagist.org/packages/topthink/think
在web目录下执行安装
安装测试
查看当前安装的tp6版本
php think version
thinkphp6 测试
3.2 视图安装
tp6 的 视图由 \think\View 类配合驱动(模板引擎驱动类),新版仅内置了 PHP 原生的模板引擎,所以需要自行下载相关TP引擎拓展
在 composer 仓库中可找到相关扩展
https://packagist.org/
composer require topthink/think-view
3.3 视图的理解
- Index类对应view下面的目录
- index方法对应view下面的目录里的静态文件
3.4 模板变量
- assign() :方法赋值属于全局变量赋值
- 模板输出
{$name}
控制器
class Index extends BaseController
{public function index(){// 模板变量赋值View::assign('name','wpsec');View::assign('email','123@admin.com');
// 在数组中批量赋值View::assign(['name' => '张三','email' => '321@admin.com']);return View::fetch();}
视图
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
姓名:{$name}
<br>
邮箱:{$email}
</body>
</html>
3.5 视图应用
标签的一些基础知识
- 普通标签:主要用于输出变量,函数过滤和一些基本运算操作
- XML标签:标签库标签,主要用于逻辑判断,控制和循环输出,并且可扩展
3.5.1 标签的运算符
控制器文件
public function index(){View::assign('a',100);View::assign('b',21);return View::fetch();
}
视图文件
<div>{$a+$b}</div>
<div>{$a-$b}</div>
<div>{$a*$b}</div>
<div>{$a/$b}</div>
<div>{$a%$b}</div>
<div>{$a++}</div>
<div>{++$a}</div>
<div>{$a--}</div>
<div>{--$a}</div>
<div>{$c ? '存在' : '不存在'}</div>
3.5.2 模板函数
控制器文件
public function index(){View::assign('time',1576048640);View::assign('num',10.0032);View::assign('str','OUyangKE');View::assign('arr',['张三','李四','王二']);return View::fetch();
}
视图文件
<div>{$time|date='Y-m-d H:i:s'}</div>
<div>{$num|format='%02d'}</div>
<div>{$str|upper}</div>
<div>{$str|lower}</div>
<div>{$arr|first}</div>
<div>{$arr|last}</div>
<div>{$default|default="张三"}</div>
<div>{$str|substr=0,3}</div>
<div>{$str|md5}</div>
<div>{$str|lower|substr=0,3}</div>
3.5.3 循环标签
- foreach 标签的用法和PHP语法非常接近,用于循环输出数组或者对象的属性
控制器文件
public function index(){$arr = [['id' => 1,'name' => '张三'],['id' => 2,'name' => '李四'],['id' => 3,'name' => '王二']];View::assign('arr',$arr);return View::fetch();
}
视图文件
{foreach $arr as $v}<div><span>ID:{$v['id']}</span><span>姓名:{$v['name']}</span></div>
{/foreach}
3.5.4 volist 循环标签
- 二维数组的结果输出
- name 模板赋值的变量名称
- id 当前的循环变量,可以随意起名
- key 下标,从1开始,默认变量i
- offset 开始行数
- length 获取行数
- empty 如果数据为空,显示此文字
视图文件
{volist name="arr" id="v" key="k" offset="1" length="2"}<div><span>ID:{$v['id']}</span><span>姓名:{$v['name']}</span><span>下标:{$k}</span></div>
{/volist}
3.5.5 if 判断标签
控制器文件
public function index(){View::assign('status',1);View::assign('order_status',4);return View::fetch();
}
视图文件
{if $status == 1}<div>开启</div>
{/if}{if $status == 0}<div>关闭</div>
{else/}<div>开启</div>
{/if}{if $order_status == 0}<div>未支付</div>
{elseif $order_status == 1/}<div>已支付 待发货</div>
{elseif $order_status == 2/}<div>已发货 待收货</div>
{elseif $order_status == 3/}<div>已收货 待评论</div>
{elseif $order_status == 4/}<div>已完成</div>
{/if}
3.5.6 switch 判断标签
视图文件
{switch $order_status}{case 0 }<div>未支付</div>{/case}{case 1 }<div>已支付 待发货</div>{/case}{case 2 }<div>已发货 待收货</div>{/case}{case 3 }<div>已收货 待评论</div>{/case}{case 4 }<div>已完成</div>{/case}
{/switch}
3.5.7 文件包含
- include 标签,引入模版文件
- load 标签,引入资源文件(css、js)
{include file="public/header" /}
{include file="public/left" /}{load href="/static/layui/css/layui.css" /}
{load href="/static/layui/layui.js" /}{include file="public/tail" /}
四. 单应用多应用切换
修改public 下的 .htaccess 文件,将访问路径重写到index.php/的最后面,在 index.php 后加入一个?,将兼容路由,不在显示index.php,直接在后面跟应用路径
多应用插件
下载插件
composer require topthink/think-multi-app
修改config/app.php中的 开启多应用自动加载 auto_multi_app => true
, 如果没有的话不用更改 然后就可以正常访问了
tp6的应用默认在index目录下,没有的自己创建,创建好后把controller目录放进去
五. 一些关键目录与文件
5.1 单应用模式目录
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 命令行入口文件
5.2 多应用模式目录
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 命令行入口文件
六. 系统环境配置
官方推荐使用环境变量的方式管理配置项(config目录)
环境变量管理
它是一个类文件,命名空间为:think\facade\env
写在一个叫 .env 的环境变量管理器里,没有的自己创建
书写配置项规则一般使用下划线法:
配置文件名 下划线 配置项
;开启跟踪器
app_trace = true
;开启调试模式
app_debug = true;数据库配置项
database_type = 'mysql'
database_hostname = '127.0.0.1'
database_database = 'tp6'
database_username = 'root'
database_password = 'root'
database_hostport = '3306'
database_charset = 'utf8'
database_debug = true
然后回到刚刚配置的配置文件中
使用 use 导入 env 这个类,命名空间为:think\facade\env
导入之后就可以使用 env 这个类中的方法了,修改源配置文件,使用get()方法让这个配置文件受我们的 环境变量管理器控制。
测试环境变量是否生效
PHP 开发 ThinkPHP6 框架学习 一相关推荐
- PHP语言Web开发ThinkPhp6框架搭建
项目介绍 一款 PHP 语言基于 ThinkPhp6.x.Layui.MySQL等框架精心打造的一款模块化.插件化.高性能的前后端分离架构敏捷开发框架,可用于快速搭建前后端分离后台管理系统,本着简化开 ...
- Python Web开发——Django框架学习
文章目录 Web开发简介 Web应用技术 Web前端开发 Web后端开发 使用 Django 开发后端服务 项目目标 管理员操作 登录界面 客户管理界面 添加客户界面 药品管理界面 添加药品界面 订单 ...
- Python开发-flask框架学习
最近闲来无事,帮别人一起看看python3与flask,据说他想搞个登录注册的小demo,然后就给看了下,顺便简单的跟他说明了下.本文只是记录我在给别人讲解怎么使用python3与flask还有mon ...
- linux mipi驱动分析_寒武纪社招内推数字IC设计、DSI驱动、软件架构、产品经理、芯片架构、工具链开发、深度学习、FAE工程师...
点击上方蓝字关注我吧! 为什么内推更靠谱?内推是基于人脉关系链的推荐,其背后有一定的信用背书,靠谱的人推荐的人相对也会比较靠谱,所以企业一般职位都是从内部开始分享的,相较于自己海投简历,内推的效率和成 ...
- TensorRT是NVIDIA开发的深度学习推理工具,只支持推理,不支持训练 引
. TensorRT是NVIDIA开发的深度学习推理工具,只支持推理,不支持训练: 目前TensorRT3已经支持Caffe.Caffe2.TensorFlow.MxNet.Pytorch等主流深 ...
- jQuery框架学习第二天:jQuery中万能的选择器
jQuery框架学习第一天:开始认识jQuery jQuery框架学习第二天:jQuery中万能的选择器 jQuery框架学习第三天:如何管理jQuery包装集 jQuery框架学习第四天:使用jQu ...
- 微软一站式开发技术框架解决方案 年内展望
微软一站式开发技术框架解决方案 (CodeFx) 自成立至今已有半年.在这半年里,我们完成了130个代码示例,主要覆盖了COM.数据访问.库加载.进程间通信.Office开发.WinForms等技术. ...
- ssm框架requestmapping找不到_框架学习,就是介么简单
框架学习 程序员凯小白 最近实训ssm框架,SSM框架,是Spring + Spring MVC + MyBatis的缩写,这个是继SSH之后,目前比较主流的Java EE企业级框架,适用于搭建各种大 ...
- rose框架学习总结
rose框架学习总结 rose框架为paoding rose框架 具体可见https://code.google.com/p/paoding-rose/ 1 对rose框架的整体认识 1.1B/S ...
最新文章
- linux文本处理工具之grep与正则表达式语法
- LINUX_egrep及扩展正则表达式
- Java生鲜电商平台-秒杀系统微服务架构设计与源码解析实战
- python工作方法_用python开始一天工作
- Java并发编程实战_福州java编程实战培训班排名
- configure: error: zlib library not found
- vs2019编译c语言提示有病毒,关于VS2019代码编译的问题(C++)
- 百度再显管理变革决心 副总裁郑子斌离职
- RVC使用指南(三)-对象管理
- Spark MLlib垃圾邮件分类示例
- 42.从非托管磁盘创建虚拟机
- 不要以为写写代码就是计算机科学
- 佛,我心中的一朵莲花
- jike2012年5月实习题
- 计算机的硬盘驱动器是一种,计算机中有两个硬盘驱动器,如何在另一个硬盘驱动器上安装系统?...
- Pend Lists
- qml 文本框获取焦点
- jxl 删除excel重复的行
- NC:宏基因组联合宏蛋白组分析揭示土壤微生物降解多酚
- Spring Doc OpenAPI3.0 抛弃SpringFox拥抱SpringDoc