返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >ThinkPHP5 如何升级到 ThinkPHP6?
  • 320
分享到

ThinkPHP5 如何升级到 ThinkPHP6?

php数据库服务器 2023-10-03 15:10:23 320人浏览 八月长安
摘要

前言 可能很多人都会苦恼,ThinkPHP5项目升级到Thinkphp6项目怎么那么麻烦,不是只升级了一个版本吗?不用担心,您只需要跟着我下面的内容,一步一步来,就会避开很多坑! 模型 指定数据表名称

前言

可能很多人都会苦恼,ThinkPHP5项目升级到Thinkphp6项目怎么那么麻烦,不是只升级了一个版本吗?不用担心,您只需要跟着我下面的内容,一步一步来,就会避开很多坑!

模型

指定数据表名称

建议在模型中添加以下语句

// 自定义对应的数据库中数据表名称protected $table = "news_cateGory";

过滤非数据表字段

$model->allowField(true) // 过滤非数据表字段改为$model->save($data);

已经没那个方法了,会默认处理

修改器

如果在参数中不存在指定字段,也必须添加key

$data["uid"] = null;$model->save($data);

部分函数必须指定返回值类型

public function getModelName() {    return $this->name;}

改为

public function getModelName() : string {    return "ModelName";}

判断select()返回值

$result = $model->select();if ($result) {}

改为

$result = $model->select();if (!$result->isEmpty()) {}

或改为

$result = $model->select()->toArray();if (!empty($result)) {}

不再支持neq

->where("picture", "neq", "") // 有图片的

改为

->where("picture", "<>", "") // 有图片的

不再支持setInc()(改了也无效,建议改为update语句)

$model->where(["id" => $id])      ->setInc("view");

改为

$model->where(["id" => $id])      ->inc("view");

不再支持getLastInsID()

$result = $model->getLastInsID();$result = $model->where("id", "=", "{$result}")->find();

改为

$result = $model    ->order(["id" => "DESC"])    ->find();

不再支持getError()

去掉

$model->getError();

实例化模型

$model = model("Category");

改为

$model = new CategoryModel;

控制器

删除原有的controller文件夹

将“D:\www\Project_PHP_ThinkPHP\01\think\app\controller”删除

_initialize()

自动调用_initialize()

改为

手动调用_initialize()

获取应用名(模块名)

request()->module()

改为

app('Http')->getName()

不再支持ROOT_PATH

在“D:\www\Project_PHP_ThinkPHP\01\think\public\index.php”添加配置
在namespace think;后添加

if (!defined('DS')) {    define('DS', DIRECTORY_SEPARATOR);}// ROOT_PATH// .../public/if (!defined('ROOT_PATH')) {    define('ROOT_PATH', str_replace('\\', '/', realpath(dirname(__FILE__) . '/')) . "/");}

模板

模板函数

$this->assign("categorys", $categorys);$this->fetch();

改为
(静态方法)

View::assign("categorys", $categorys);return View::fetch();

跳转

去掉

use think\Controller;

需要安装跳转扩展

模板常量和关闭模板缓存

在“D:\www\Project_PHP_ThinkPHP\00\think\config\view.php”添加配置

// 模板常量'tpl_replace_string' => [    '__STATIC__' => '/Project_PHP_ThinkPHP/01/think/public/static',],// 关闭模板缓存'tpl_cache'     => false,

分页

在“D:\www\Project_PHP_ThinkPHP\00\think\config\view.php”添加配置

// 分页配置'paginate'      => [    'list_rows' => 5,],

将“D:\www\Project_PHP_ThinkPHP\01\think\vendor\topthink\think-ORM\src\paginator\driver\Bootstrap.php”复制一份
到“D:\www\Project_PHP_ThinkPHP\01\think\app\common\Bootstrap.php”
在“D:\www\Project_PHP_ThinkPHP\01\think\app\provider.php”添加配置

'think\Paginator'        => 'app\common\Bootstrap'

注意分页函数paginate的参数改变了

从控制器到模板会强制将字符串转实体

$data = "span>"{$data}

{$users->render()}

改为

$data = "span>"{$data|raw}

{$users->render()|raw}

验证器

验证规则注意事项

建议unique的值对应数据表名

"username" => "require|length:2,100|unique:news_user",

验证规则更新

["mobile", ["require", "regex:/^1(3\d|4[57]|5[0-37-9]|7[6-8]|8[0235-9])\d{8}$/", "unique:user"]]

改为

"mobile" => ["require", "regex:/^1(3\d|4[57]|5[0-37-9]|7[6-8]|8[0235-9])\d{8}$/", "unique:news_user"]

验证器

$model->validate(true) // 调用自定义validate类

改为

// 使用自定义validate类验证方式try{    validate(UserValidate::class)->batch(true)->check($data);}catch (ValidateException $e){    // 验证失败    // var_dump($e->getError());    $this->error($e->getMessage());}

Session、Cookie

开启Session(使用验证码扩展必须开启Session)

在“D:\www\Project_PHP_ThinkPHP\00\think\app\middleware.php”设置

// Session初始化\think\middleware\SessionInit::class

控制器中

use think\Session;use think\Cookie;

改为

use think\facade\Session;use think\facade\Cookie;

或改为
助手函数(时间参数单位为秒)

// 设置session("name", "value");// 判断是否存在echo session("?name");// 获取echo session("name");// 删除session("name", null);// 清除sessionsession(null);// 设置cookie("name", "value", 3600);// 判断是否存在echo cookie("?name");// 获取echo cookie("name");// 删除cookie("name", null);// 清理全部cookie(null);

销毁

去掉

session_destroy();

模板中

{$Think.session.xxx}

改为

{$Request.session.xxx}

设置获取配置文件

设置获取配置文件函数

config("name")

改为

use think\facade\Config;Config::get("name");Config::has("name");Config::set("name", "value");

上传文件

获取文件

$files = request()->file("ff");if ($files) {}

改为

$files = request()->file()["ff"];if (!empty($files)) {}

验证

引入try catch,验证方法改变,验证图像文件的尺寸和类型有bug

// 保存上传的文件, 并获取文件名数组$files = request()->file("ff");if ($files) {    $path = ROOT_PATH . "static/picture";    $pictureArray = [];    foreach ($files as $key => $value) {        $info = $value->validate(["size" => 2048000, "ext" => "jpg,png,gif"])->move($path);        if ($info) {            $pictureArray[] = str_replace("\\", "/", $info->getSaveName());        } else {            $this->error($value->getError());        }    }    // 数据库只能存放字符串数据类型,文件名数组要转化成字符串    $data["picture"] = serialize($pictureArray);    // 将字符串中的双引号替换成单引号    $data["picture"] = str_replace("\"", "'", $data["picture"]);}

改为

// 保存上传的文件, 并获取文件名数组$files = request()->file();try{    validate(["ff" => "fileSize:2048000|fileExt:jpg"])->check($files);    $files = $files["ff"];    if (!empty($files)) {        $path = ROOT_PATH . "static/picture/";        $pictureArray = [];        foreach ($files as $key => $value) {            $filename = \new_file::get_unique_file_name($value->getOriginalName());            $result = move_uploaded_file($value->getPathName(), $path . $filename);            if ($result) {                $pictureArray[] = $filename;            } else {                $this->error("添加新闻分类失败!");            }        }        // 数据库只能存放字符串数据类型,文件名数组要转化成字符串        $data["picture"] = serialize($pictureArray);        // 将字符串中的双引号替换成单引号        $data["picture"] = str_replace("\"", "'", $data["picture"]);    }}catch (ValidateException $e){    // 验证失败    // var_dump($e->getError());    $this->error($e->getMessage());}

来源地址:https://blog.csdn.net/skyksksksksks/article/details/129849127

--结束END--

本文标题: ThinkPHP5 如何升级到 ThinkPHP6?

本文链接: https://lsjlt.com/news/423083.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • ThinkPHP5 如何升级到 ThinkPHP6?
    前言 可能很多人都会苦恼,ThinkPHP5项目升级到ThinkPHP6项目怎么那么麻烦,不是只升级了一个版本吗?不用担心,您只需要跟着我下面的内容,一步一步来,就会避开很多坑! 模型 指定数据表名称...
    99+
    2023-10-03
    php 数据库 服务器
  • MySQL5.6.30如何升级到MySQL5.7.18
    这篇文章给大家分享的是有关MySQL5.6.30如何升级到MySQL5.7.18的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。本次升级采用:out of place 逻辑升级方式...
    99+
    2024-04-02
  • 如何升级Zabbix2.4.5到Zabbix3.0.2
    这篇文章主要介绍了如何升级Zabbix2.4.5到Zabbix3.0.2,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一 应用场景描述&nb...
    99+
    2024-04-02
  • win101909如何升级到2004
    这篇文章主要介绍“win101909如何升级到2004”,在日常操作中,相信很多人在win101909如何升级到2004问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”win101909如何升级到2004”的疑...
    99+
    2023-07-01
  • win8如何升级到win10?win8升级win10教程
    更换系统最担心的一件事情就是原有的东西会没有了,win8升级到win10不会出现这样的问题,原先安装的软件依旧还在的,下面是详细的安装教学介绍。 win8如何升级到win10 1、下载WIN10镜像文件,...
    99+
    2022-06-04
    升级到 教程
  • 如何将MySQL5.7升级到8.0
    这期内容当中小编将会给大家带来有关如何将MySQL5.7升级到8.0,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1.升级前准备及注意事项首先,我们要大概了解下MySQL...
    99+
    2024-04-02
  • 电脑如何升级到win11
    要升级到Windows 11,您需要满足以下要求:1. 硬件要求:您的计算机必须具备以下硬件要求:- 64位处理器:至少为1 GHz...
    99+
    2023-08-30
    win11
  • suse11 openssh如何升级到8.0
    suse11 openssh如何升级到8.0,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。SUSE 11 升级Opensshopenssh 官网下载地址:http://ww...
    99+
    2023-06-05
  • 如何使用升级助手升级到Win8系统
    在升级至Windows 8时,微软强烈推荐先安装Windows 8升级助手。它可以扫描你当前的电脑以了解它是否准备好升级为Windows 8,并可提供兼容性报告和购买、下载以及安装Windows 8...
    99+
    2022-06-04
    升级到 如何使用 助手
  • MySql5.x如何升级到MySql8.x
    小编给大家分享一下MySql5.x如何升级到MySql8.x,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Mysql5.x与My...
    99+
    2024-04-02
  • win7如何升级到win11系统
    这篇文章主要介绍“win7如何升级到win11系统”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“win7如何升级到win11系统”文章能帮助大家解决问题。方法:首先我们点击左下角开始菜单,然后找到并...
    99+
    2023-07-01
  • windows中office2007如何升级到2016
    这篇文章主要介绍“windows中office2007如何升级到2016”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“windows中office2007如何升级到2016”文章能帮助大家解决问题。...
    99+
    2023-07-02
  • win7如何升级到win8系统
    这篇文章主要介绍“win7如何升级到win8系统”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“win7如何升级到win8系统”文章能帮助大家解决问题。win7升级到win8系统的方法:首先将win7...
    99+
    2023-06-30
  • win7如何升级到win10系统
    随着Win10系统的逐步成熟,很多用户已经用上了Win10系统,而一些还在用Windows7的朋友是不是也心动了呢,那么Windows7怎么升级10系统呢?下面一起来看看吧。1、浏览器搜索装机吧在线系统重装工具软件并打开,选择制作系统,点击...
    99+
    2023-07-11
  • ubuntu16.04如何手动升级到ubuntu18.04
    这篇文章将为大家详细讲解有关ubuntu16.04如何手动升级到ubuntu18.04,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。ubuntu16.04想要升级到ubuntu18.04系统,该怎么升级呢...
    99+
    2023-06-13
  • MySQL如何从5.5升级到8.0(使用命令行升级)
    目录准备1、下载要安装的mysql版本2、配置环境变量3、添加配置文件安装1、卸载MySQL5.52、安装新的MySQL8.0总结谁没事想重装数据库啊 学到了数据库原理,实验作业里面有新建角色的SQL语句,但是我打上去运...
    99+
    2023-03-06
    mysql5.0升级到8.0 mysql版本升级 如何升级mysql
  • MySQL 5.6如何升级到5.7版本
    小编给大家分享一下MySQL 5.6如何升级到5.7版本,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧! ...
    99+
    2024-04-02
  • 如何将项目升级到vue-cli3
    这篇文章将为大家详细讲解有关如何将项目升级到vue-cli3,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一. 原以为升级vue-cli3的路线是这样的:创建vue-cl...
    99+
    2024-04-02
  • 如何使Ubuntu 14.04升级到Ubuntu 14.10
    本篇内容介绍了“如何使Ubuntu 14.04升级到Ubuntu 14.10”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Ubuntu 14...
    99+
    2023-06-13
  • 如何将Fedora 4升级到Fedora 9
    这篇文章将为大家详细讲解有关如何将Fedora 4升级到Fedora 9,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。安装fedora-release和fedora-release-note...
    99+
    2023-06-07
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作