thinkphp8 从入门到放弃(后面会完善用到哪里写到哪)

thinkphp8 从入门到放弃

    • 引言 thinkphp* 大道至简
    • 一、 thinkphp8 安装
        • 安装Composer
        • thinkphp 安装命令(tp-项目名称)
        • 多应用安装(一个项目不会只有一个应用)
        • 安装完文件目录如下
        • 本地部署配置伪静态
        • 好了项目可以run
    • 二、架构
        • 服务(Service)
        • 门面(Facade)
        • token 创建(使用php-jwt)

引言 thinkphp* 大道至简

感谢thinkphp 开发团队,多年的努力 一直在更新。
TP8 看云手册-点击进入看云

一、 thinkphp8 安装

安装Composer

访问Composer官方网站(https://getcomposer.org/),下载适合您操作系统的安装程序。

运行安装程序:Windows: 双击下载的composer-setup.exe文件,然后按照向导操作。

thinkphp 安装命令(tp-项目名称)

composer create-project topthink/think tp(项目名称自己定义即可)

多应用安装(一个项目不会只有一个应用)

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

安装完文件目录如下

在这里插入图片描述

本地部署配置伪静态
<IfModule mod_rewrite.c> 
Options +FollowSymlinks -Multiviews 
RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*)$ index.php [L,E=PATH_INFO:$1] 
</IfModule>
好了项目可以run

在这里插入图片描述

二、架构

服务(Service)

负责具体的业务逻辑实现,将原本控制器的负责流程按模块拆分为一个个小的服务,方便给控制器层组合调用,一般不要跨模块调用服务,服务中可以调用本模块的仓库层方法

门面(Facade)
token 创建(使用php-jwt)

PHP JWT(JSON Web Token)是一种用于身份验证和授权的开放标准。JWT是一个包含有关用户或实体身份信息的安全令牌,它由三部分组成:头部(Header)、载荷(Payload)和签名(Signature)。

composer require firebase/php-jwt
安装完如下图:
在这里插入图片描述

use \Firebase\JWT\JWT;
use \Firebase\JWT\Key;//生成验签
function signToken($uid, $type)
{$key = Config::get('app.salt') . $type;//这里是自定义的一个随机字串,应该写在config文件中的,解密时也会用,相当    于加密中常用的 盐  salt$token = array("iss" => $key,        //签发者 可以为空"aud" => '',          //面象的用户,可以为空"iat" => time(),      //签发时间"nbf" => time() + 3,    //在什么时候jwt开始生效  (这里表示生成100秒后才生效)"exp" => time() + 86400, //token 过期时间"data" => [           //记录的userid的信息,这里是自已添加上去的,如果有其它信息,可以再添加数组的键值对'uid' => $uid,'type' => $type]);$jwt = JWT::encode($token, $key, "HS256");  //根据参数生成了 tokenreturn $jwt;
}//验证token
function checkToken($token, $type)
{$key = Config::get('app.salt') . $type;$status = array("code" => -1);try {JWT::$leeway = 60;//当前时间减去60,把时间留点余地$decoded = JWT::decode($token, new Key($key, 'HS256')); //HS256方式,这里要和签发的时候对应$arr = json_decode(json_encode($decoded), 1);$res['code'] = 1;$res['data'] = $arr['data'];return $res;} catch (\Firebase\JWT\SignatureInvalidException $e) { //签名不正确$status['msg'] = "签名不正确";return $status;} catch (\Firebase\JWT\BeforeValidException $e) { // 签名在某个时间点之后才能用$status['msg'] = "token失效";return $status;} catch (\Firebase\JWT\ExpiredException $e) { // token过期$status['msg'] = "token失效";return $status;} catch (Exception $e) { //其他错误$status['msg'] = "未知错误";return $status;}
}

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

DataGrip远程连接Hive

学会用datagrip远程操作hive 连接前提条件&#xff1a; 注意&#xff1a;mysql是否是开启状态 启动hadoop集群 start-all.sh 1、启动hiveserver2服务 nohup hiveserver2 >> /usr/local/soft/hive-3.1.3/hiveserver2.log 2>&1 & 2、beeline连接 beelin…

智能车镜头组入门(六)车模的控制

本文会简单的介绍一些车模控制的方法。前文也说到过&#xff0c;因为我是写摄像头部分的&#xff0c;所以车模的控制部分我只能给大家简单的介绍下。 大家可能有所听说&#xff0c;智能车竞赛又被称为调参竞赛。显然好的参数决定了小车车速的上限。 调参调的是哪呢&#xff1…

【智能大数据分析 | 实验一】MapReduce实验:单词计数

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈智能大数据分析 ⌋ ⌋ ⌋ 智能大数据分析是指利用先进的技术和算法对大规模数据进行深入分析和挖掘&#xff0c;以提取有价值的信息和洞察。它结合了大数据技术、人工智能&#xff08;AI&#xff09;、机器学习&#xff08;ML&a…

人工智能项目式综合实验教学平台,让教学实训更简单

一、引言 人工智能&#xff08;AI&#xff09;的发展推动了职业教育进入一个全新的交叉学科时代&#xff0c;对培养具有跨学科知识和创新能力的高级工程技术人才提出了新的要求。在OBE框架下&#xff0c;目前的实验教学更多地强调在受控环境下验证算法的有效性&#xff0c;而较…

【Linux】Linux进程的概念

一、冯诺依曼体系结构 我们常见的计算机&#xff0c;比如笔记本&#xff0c;我们不常见的计算机&#xff0c;比如服务器&#xff0c;大部分都遵循冯诺依曼体系结构。 截至目前&#xff0c;我们所认识的计算机&#xff0c;都是有一个一个独立的硬件组成&#xff1a; 输入单元&a…

兼容多个AI应用接口,支持用户自定义切换AI接口

项目背景 2023年ChatGPT横空出世&#xff0c;给IT行业造成了巨大的反响。我第一次发现这个ChatGPT有着如此神奇的功能&#xff08;智能对话&#xff0c;知识问答&#xff0c;代码生成&#xff0c;逻辑推理等&#xff09;&#xff0c;我感到非常吃惊&#xff01;经过一番学习和…

张养浩,文坛政坛的双重巨匠

张养浩&#xff0c;字希孟&#xff0c;号云庄&#xff0c;又称齐东野人&#xff0c;生于元世祖至元七年&#xff08;公元1270年&#xff09;&#xff0c;卒于元英宗至治三年&#xff08;公元1329年&#xff09;&#xff0c;享年59岁。他是中国元代著名的文学家、政治家&#xf…

文章解读与仿真程序复现思路——电网技术EI\CSCD\北大核心《兼顾参与调频辅助服务的工商业储能电站充放电策略》

本专栏栏目提供文章与程序复现思路&#xff0c;具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…

公私域互通下的新商机探索:链动2+1模式、AI智能名片与S2B2C商城小程序的融合应用

摘要&#xff1a;在数字化时代&#xff0c;公私域流量的有效融合已成为企业获取持续增长动力的关键。本文旨在探讨如何通过链动21模式、AI智能名片以及S2B2C商城小程序源码的综合运用&#xff0c;实现公私域流量的高效互通&#xff0c;进而为门店创造巨大商机。通过分析这些工具…

李宏毅机器学习2023-HW11-Domain Adaptation

文章目录 TaskLinkBaselineSimple BaselineMedium BaselineStrong BaselineBoss Baseline Task Domain Adaptation 通过训练真实图片得到分类模型&#xff0c;并将其应用到涂鸦图片上进行分类&#xff0c;来获得更高的精准度。 Link kaggle colab Baseline Simple Baseli…

12V转100V低压升高压DC/DC电源GRB12-100D-100mA-Uz(0-3V)

特点 ● 效率高达75%以上 ● 1*2英寸标准封装 ● 单电压输出 ● 超高性价比 ● 电压控制输出,输出电压随控制电压的变化而线性变压 ● 工作温度: -40℃~75℃ ● 阻燃封装&#xff0c;满足UL94-V0 要求 ● 温度特性好 ● 可直接焊在PCB 上 应用 GRB 系列模块电源是一…

【计算机网络篇】数据链路层 功能|组帧|流量控制与可靠传输机制

&#x1f9f8;安清h&#xff1a;个人主页 &#x1f3a5;个人专栏&#xff1a;【计算机网络】 &#x1f6a6;作者简介&#xff1a;一个有趣爱睡觉的intp&#xff0c;期待和更多人分享自己所学知识的真诚大学生。 系列文章目录 【计算机网络篇】计算机网络概述 【计算机网络篇…

cmake--set_target_properties

作用 设置某个指定的目标(文件&#xff0c;)的某些属性&#xff1b; 可以设置的属性 设置版本属性 cmake_minimum_required(VERSION 3.10)project(test_set_target_properties)add_library(mylib SHARED src/test.cpp) set_target_properties(mylib PROPERTIES VERSION 1.0.…

使用Kali Linux系统生成木马病毒并实现远程控制计算机

木 马 生成木马病毒并实现远程控制计算机 木马病毒是指隐藏在正常程序中的一段具有特殊功能的恶意代码 通常有控制端和被控制端两个可执行程序。 它通过将自身伪装吸引用户下载执行&#xff0c;向施种木马者提供打开被种者电脑的门户&#xff0c;使施种者可以任意毁坏、窃…

红队攻防 | 凭证获取的10个方法,零基础入门到精通,收藏这一篇就够了

作为红队成员&#xff0c;就像许多其他APT一样&#xff0c;我们须找到通往目标网络和资产的方法&#xff0c;因此要付出大量努力&#xff0c;从我们可以获得的任何资源中获取登录凭证或令牌。 这并不意味着我们只寻找登录特定服务的用户名和密码&#xff0c;在许多情况下&…

500元以内头戴式耳机哪款好?盘点500元以内百元宝藏品牌机型推荐

作为耳机发烧友&#xff0c;我深知一副优质的头戴式耳机都能为我们带来沉浸式的听觉体验&#xff0c;但然而&#xff0c;面对市场上琳琅满目的耳机品牌和型号&#xff0c;500元以内头戴式耳机哪款好&#xff1f;对于这个问题我将为大家盘点500元以内百元宝藏品牌机型推荐无论你…

读构建可扩展分布式系统:方法与实践10最终一致性

1. 最终一致性 1.1. 在一些应用领域&#xff0c;通常谈论的是银行和金融行业&#xff0c;最终一致性根本不合适 1.2. 事实上&#xff0c;最终一致性在银行业已经使用了很多年 1.2.1. 支票需要几天时间才能在你的账户上进行核对&#xff0c;而且你可以轻松地开出比账户余额多的…

【Elasticsearch】-实现向量相似检索

1、http请求方式 如果elasticsearch服务设置账号密码&#xff0c;则在请求的header中添加 Basic Auth 认证 请求方式&#xff1a;Post 请求地址&#xff1a;/index_name/_search 请求body&#xff1a;json格式 {"size": 10, //返回条数"min_score": 0.…

一生一芯 预学习阶段 PA1--RTFSC中“make menuconfig”

Enable debug information 问题如上。 在menuconfig将 Enable debug information 选项打开&#xff0c;编译时会产生什么变化&#xff1f; 从选项上看是打开了支持调试的选项&#xff0c;编译时应该是添加了支持编译的参数&#xff0c;具体看代码。 首先&#xff0c;我们先看…

Tomcat 乱码问题彻底解决

1. 终端乱码问题 找到 tomcat 安装目录下的 conf ---> logging.properties .修改ConsoleHandler.endcoding GBK &#xff08;如果在idea中设置了UTF-8字符集&#xff0c;这里就不需要修改&#xff09; 2. CMD命令窗口设置编码 参考&#xff1a;WIN10的cmd查看编码方式&am…