【PHP】ThinkPHP基础

下载composer

ComposerA Dependency Manager for PHPicon-default.png?t=O83Ahttps://getcomposer.org/

安装composer

查看composer是否安装

composer
composer --version

安装 ThinkPHP6

如果你是第一次安装的话,首次安装咱们需要打开控制台:

进入后再通过命令,在命令行下面,切换到你的WEB根目录下面:

cd E:\Web\www

接着输入以下命令安装 tp6.0:

composer create-project topthink/think tp621

这里的tp621目录名你可以任意更改,这个目录就是我们后面会经常提到的应用根目录。

查看当前安装的tp61版本

cd到tp61,然后输入:php think version即可运行成功

php think version

报错解决

开启debug调试:

找到app同级目录文件.example.env,更名为.env,另外在文件中要加上一句:APP_DEBUG = true,保存。

视图安装

视图功能由\think\View类配合视图驱动(也即模板引擎驱动)类一起完成,新版仅内置了PHP原生模板引擎(主要用于内置的异常页面输出),如果需要使用其它的模板引擎需要单独安装相应的模板引擎扩展。如果需要使用thinkTemplate模板引擎,需要安装think-view扩展(该扩展会自动安装think-template依赖库)

该扩展跟tp6安装多应用扩展一样,需要安装think-template(命令:composer require topthink/think-view),切记一定要在项目根目录进行安装

使用cmd窗口,将目录切换到ThinkPHP文件根目录下,使用composer安装thinkview引擎模板:

d:
cd /xampp/htdocs/tp
composer require topthink/think-view

配置文件

安装完成后,在config目录的view.php文件中进行模板引擎相关参数的配置

(多应用则是相应的应用下view.php),例如:

开启多应用模式

在默认情况下 tp6.0 是单应用模式,在开启多应用模式后目录结构会发生变化(如何开启后面学到再说)

在此只说明两者目录区别,在单应用模式下,app目录即使应用目录

若使用多应用模式时,在app 目录下将会多出一个文件夹则是不同应用的目录

在这个文件夹下需要放入默认的应用文件(原先的应用文件复制进去),多个项目创建多个即可。

四、站点应用入口

整个tp6.0 的文件入口在 public 目录下:

修改 index.php 你会发现访问后会有不同的效果。

若你想试着改变 index.php,例如修改如下(删除多余代码):

1. 开启多应用模式
默认是单应用的

如果要使用多应用模式,你需要安装多应用模式扩展think-multi-app。

composer require topthink/think-multi-app


扩展安装成功之后,在config目录下找到第一个app.php文件打开,在app.php添加配置: 'auto_multi_app' => true

app中的目录结构调整为 

一定要修改namespace对应上应用的名称

模板渲染,模板路径

ThinkPHP 6 视图

ThinkPHP6.0框架默认支持PHP原生模板的配置及使用,包括修改配置文件将模板引擎改为PHP,以及模板渲染和变量赋值的方法。同时,文章也详细阐述了如何安装和配置thinkTemplate扩展,以及TP模板引擎的安装、配置、变量处理和模板渲染过程,包括模板路径、渲染规则和视图过滤。最后提到了如何切换和初始化不同的模板引擎。

框架6.0默认只能支持PHP原生模板,如果需要使用thinkTemplate模板引擎,需要安装think-view扩展(该扩展会自动安装think-template依赖库)。

PHP原生模板

1.配置文件,修改模板引擎

默认设置为Think,因为没有安装,直接使用会报错;

使用php原生模板,需要修改配置目录的view.php文件的模板引擎为`php`

多应用则是相应的应用下view.php):

// 模板引擎类型使用Think
'type'          => 'php',

报错提示

4.模板渲染

这里做一个简单示例,TP的模板渲染会做更详细讲解,

因为php原生模板变量渲染与常规TP不同,故作此示例:

5.控制器文件
// 添加引用
use think\facade\View;
// 变量赋值
View::assign('name', '张三');
// 模板输出
return View::fetch('user/index');

6.视图文件
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>用户详情</title>
</head>
<body><h1>用户详情</h1><p>我是<?php echo $name ?></p>
</body>
</html>

TP模板引擎

1.安装

安装thinkview模板引擎,使用cmd窗口,将目录切换到ThinkPHP文件根目录下,使用composer安装thinkview引擎模板:

cd E:\Web\www\tp831
composer require topthink/think-view

2.配置文件

安装完成后,在配置目录的view.php文件中进行模板引擎相关参数的配置

应用则是相应的应用下view.php),例如:

比如我习惯模板变量标签是两个花括号,改一下这里就行

// 模板引擎普通标签开始标记
'tpl_begin'     => '{{',
// 模板引擎普通标签结束标记
'tpl_end'       => '}}',
// 标签库标签开始标记
'taglib_begin'  => '{{',
// 标签库标签结束标记
'taglib_end'    => '}}',

模板变量

View门面全局变量赋值
public function index()
{// 单次赋值View::assign('name', '张三');// 批量赋值View::assign(['gender' => '男', 'school' => '本科']);// 输出模板return View::fetch('user/index');
}

View门面当前模板赋值
public function index()
{// 输出模板return View::fetch('user/index', ['name' => '张三','gender' => '男','school' => '本科']);
}

助手函数当前模板赋值
public function serviceContractPreview()
{// 输出模板return view('user/index', ['name' => '张三','gender' => '男','school' => '本科']);
}

切换模板引擎

1.Engine初始化

视图类提供了engine方法对模板解析引擎进行初始化来切换不同的模板引擎:

使用门面View(think\facade\View)

没有变量赋值,直接输出模板

namespace app\index\controller;use think\facade\View;class Index
{public function index(){// 使用内置PHP模板引擎渲染模板输出return View::engine('php')->fetch();}
}

如果有变量赋值

namespace app\index\controller;use think\facade\View;class Index
{public function index(){// 初始化内置PHP模板引擎View::engine('php');// 变量赋值View::assign('name', '张三');// 模板输出return View::fetch('index');}
}
2.Config信息修改

如果需要动态改变模板引擎的参数,请使用视图类提供的config方法进行动态设置

namespace app\index\controller;use think\facade\View;class Index
{public function index(){// 改变当前操作的模板路径View::config(['type' => 'php']);// 变量赋值View::assign('name', '张三');// 模板输出return View::fetch('index');}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/471378.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringBoot(十八)SpringBoot集成Minio

项目上传文件集成一下Minio,下面是我在项目中集成Minio的全过程。 首先介绍一下Minio:MinIO是高性能的对象存储,单个对象最大可达5TB。适合存储图片、视频、文档、备份数据、安装包等一系列文件。是一款主要采用Golang语言实现发开的高性能、分布式的对象存储系统。客户端支…

宗馥莉的接班挑战:内斗升级,竞品“偷家”

内斗不止&#xff0c;外患环伺&#xff0c;情怀助力娃哈哈短暂回暖&#xff0c;但市场认可与持续增长仍充满不确定性。 转载&#xff1a;原创新熵 作者丨晓伊 编辑丨蕨影 一波未平&#xff0c;一波又起。继换办公楼、逼员工签新合同和宗馥莉疑似出走等事件后&#xff0c;娃哈哈…

K8S单节点部署及集群部署

1.Minikube搭建单节点K8S 前置条件&#xff1a;安装docker&#xff0c;注意版本兼容问题 # 配置docker源 wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo# 安装docker环境依赖 yum install -y yum-utils device-m…

MySQL —— MySQL逻辑架构与查询过程

文章目录 MySQL逻辑架构整体分为三层连接层服务层查询缓存解析器优化器执行器 存储引擎层系统文件层 MySQL 查询过程查询过程框图 博客1 博客2 MySQL逻辑架构整体分为三层 最上层为客户端层&#xff0c;并非MySQL所独有&#xff0c;诸如&#xff1a;连接管理、授权认证、权限校…

【大数据学习 | HBASE高级】storeFile文件的合并

Compaction 操作分成下面两种&#xff1a; Minor Compaction&#xff1a;是选取一些小的、相邻的StoreFile将他们合并成一个更大的StoreFile&#xff0c;对于删除、过期、多余版本的数据不进行清除。 Major Compaction&#xff1a;是指将所有的StoreFile合并成一个StoreFile&am…

微服务day08

Elasticsearch 需要安装elasticsearch和Kibana&#xff0c;应为Kibana中有一套控制台可以方便的进行操作。 安装elasticsearch 使用docker命令安装&#xff1a; docker run -d \ --name es \-e "ES_JAVA_OPTS-Xms512m -Xmx512m" \ //设置他的运行内存空间&#x…

操作系统lab4-页面置换算法的模拟

操作系统lab4-页面置换算法的模拟 文章目录 操作系统lab4-页面置换算法的模拟实验目的实验内容实验分析 代码测试用例运行结果 实验目的 1、掌握请求分页存储管理的常用理论&#xff1a;页面置换算法。 2、理解请求分页中的按需调页机制。 实验内容 独立地用高级语言编写和…

react-redux useSelector钩子 学习样例 + 详细解析

&#xff08;一&#xff09;react-redux useSelector 学习样例 详细解析 创建一个新项目&#xff0c;将依赖正确安装&#xff1a; npx create-react-app my-redux-app cd my-redux-app# 安装 Redux 和 React-Redux npm install redux react-redux# 安装 ajv npm install ajv#…

IP数据云 识别和分析tor、proxy等各类型代理

在网络上使用代理&#xff08;tor、proxy、relay等&#xff09;进行访问的目的是为了规避网络的限制、隐藏真实身份或进行其他的不正当行为。 对代理进行识别和分析可以防止恶意攻击、监控和防御僵尸网络和提高防火墙效率等&#xff0c;同时也可以对用户行为进行分析&#xff…

《Django 5 By Example》阅读笔记:p76-p104

《Django 5 By Example》学习第4天&#xff0c;p76-p104总结&#xff0c;总计29页。 一、技术总结 1.环境变量管理 这里作者使用的是&#xff1a;python-decouple&#xff0c;本人在实际项目中使用的是python-dotenv&#xff0c;这里只是简单的使用&#xff0c;感觉两者差不…

【IC每日一题:IC常用模块--RR/handshake/gray2bin】

IC每日一题&#xff1a;IC常用模块--RR/handshake/gray2bin 1 RR仲裁器2 异步握手信号处理3 格雷码和二进制相互转换 1 RR仲裁器 应用&#xff1a;在多个FIFO请求pop时存在仲裁策略&#xff0c;还有比如多master申请总线控制权的仲裁等这些应用场合&#xff1b;假如当前是最高…

【Visual Studio】使用VS调试(Debug)

确保在Debug模式下而不是Release 打断点(break point) 直接在有代码的行前单击&#xff0c;会出现红色的点(再次单击会取消)&#xff1b;或者光标停留在某行&#xff0c;按F9 这意味着程序当执行到这一行时会终止 在打完断点后点击”本地Windows调试器“或者按F5 往下翻会…

基于RK3568J多网口电力可信物联网关解决方案

前言 随着工业物联网的普及和功能越来越强大&#xff0c;边缘计算网关应运而生。 边缘计算有效降低了云端服务器的负载、大大降低了带宽的占用&#xff0c;同时也为本地化的区域自治提供了便利条件。 边缘计算网关&#xff0c;完美地发挥了“边”与“端” 结合优势&#xff0c…

⾃动化运维利器Ansible-基础

Ansible基础 一、工作原理二、快速入门2.1 测试所有资产的网络连通性2.2 发布文件到被管理节点(资产) 三、资产(被管理节点)3.1 静态资产3.1.1 自定义资产3.1.2 自定义资产的使用3.1.3 资产选择器 四、Ansible Ad-Hoc 命令4.1 模块类型4.1.1 command & shell 模块4.1.2 cop…

SpringBoot实战(三十一)集成iText5,实现RSA签署PDF

目录 一、什么是电子签章?1.1 定义1.2 电子签章的工作原理1.3 电子签章的优势二、准备工作:证书生成、印章生成2.1 证书生成2.2 印章生成三、Java代码实现 RSA 签署 PDF3.1 坐标签署3.2 关键字签署3.3 日期签署3.4 骑缝章签署3.5 文本域签署一、什么是电子签章? 1.1 定义 电…

vue面试题7|[2024-11-14]

问题1&#xff1a;什么是渐进式框架? vue.js router vuex element ...插件 vue.js 渐0 router 渐1 vuex 渐2 vue.js只是一个核心库&#xff0c;比如我再添加一个router或者vuex&#xff0c;不断让项目壮大&#xff0c;就是渐进式框…

【力扣热题100】[Java版] 刷题笔记-169. 多数元素

题目&#xff1a;169. 多数元素 给定一个大小为 n 的数组 nums &#xff0c;返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。 你可以假设数组是非空的&#xff0c;并且给定的数组总是存在多数元素。 解题思路 该题目的核心点是&#xff1a;元素出现…

Dolby TrueHD和Dolby Digital Plus (E-AC-3)编码介绍

文章目录 1. Dolby TrueHD特点总结 2. Dolby Digital Plus (E-AC-3)特点总结 Dolby TrueHD 与 Dolby Digital Plus (E-AC-3) 的对比 Dolby TrueHD和Dolby Digital Plus (E-AC-3) 是两种高级的杜比音频编码格式&#xff0c;常用于蓝光影碟、流媒体、影院等高品质音频传输场景。它…

第三十一天|贪心算法| 56. 合并区间,738.单调递增的数字 , 968.监控二叉树

目录 56. 合并区间 方法1&#xff1a;fff 看方法2&#xff1a;fff优化版 方法3&#xff1a; 738.单调递增的数字 968.监控二叉树&#xff08;贪心二叉树&#xff09; 56. 合并区间 判断重叠区间问题&#xff0c;与452和435是一个套路 方法1&#xff1a;fff 看方法2&am…

火车车厢重排问题,C++详解

目录 实验题目 解题思路 1先看缓冲队列队头是否符合要求 2看队头元素是否符合要求 完整代码 运行结果 实验题目 火车车厢重排问题 实验说明&#xff1a;转轨站示意图如下&#xff1a; 火车车厢重排过程如下&#xff1a; 火车车厢重排算法伪代码如下&#xff1a; 解题思路…