当前位置: 首页 > article >正文

【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.kler.cn/a/399436.html

相关文章:

  • 第二十一周学习周报
  • 鸿蒙实现 web 传值
  • 鸿蒙实战:页面跳转
  • java常用工具包介绍
  • 计算机网络:运输层 —— TCP的流量控制
  • 如何从docker-hub下载镜像
  • [NSSCTF Round#16 Basic]了解过PHP特性吗 详细题解
  • web前端开发网页--css样式的使用
  • Prometheus面试内容整理-场景应用和故障排查
  • Flutter开发之flutter_local_notifications
  • 2024年了,TCP分析工具有哪些?
  • 力扣-Hot100-链表其一【算法学习day.34】
  • websocket身份验证
  • 网络技术-定义配置ACL规则的语法和命令
  • 学了Arcgis的水文分析——捕捉倾泻点,河流提取与河网分级,3D图层转要素失败的解决方法,测量学综合实习网站存着
  • htm + vue + quill 富文本编辑器案例
  • ubuntu连接orangepi-zero-2w桌面的几种方法
  • 【逐行注释】三维容积卡尔曼滤波(CKF)的MATLAB例程,附下载链接
  • 探秘Spring Boot中的@Conditional注解
  • 千帆启航,人才先行 | 讯方技术HarmonyOS人才训练营
  • 基于springboot家教管理系统源码和论文
  • 【linux】如何扩展磁盘容量(VMware虚拟机)-转载
  • SpringMVC学习笔记(一)
  • 23种设计模式的Flutter实现第一篇创建型模式(一)
  • 号卡分销系统,号卡系统,物联网卡系统源码安装教程
  • Tomcat 与 Servlet 的关系:传统与 Spring Boot 中的差异