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

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.mrgr.cn/news/31687.html

相关文章:

  • 【图文详解】什么是微服务?什么是SpringCloud?
  • Web_php_include 攻防世界
  • 6. Python 输出长方形,直角三角形,等腰三角形
  • 【编底层原理】打开百度,输入搜索关键字,点击搜索,会发生什么,底层是如何实现的
  • PLSQL 显示行号(隔条)
  • 2024年华为杯中国研究生数学建模竞赛C题(数据驱动下磁性元件的磁芯损耗建模)思路
  • Android命令行启动settings
  • 前端框架的对比和选择
  • 快手店铺多开甜羊浏览器
  • 网络安全详解
  • 迭代器和生成器的学习笔记
  • 《让手机秒变超级电脑!ToDesk云电脑、易腾云、青椒云移动端评测》
  • 在安装软件的时候显示缺少dll文件
  • 线程安全问题
  • 2024 “华为杯” 中国研究生数学建模竞赛(C题)深度剖析|数据驱动下磁性元件的磁芯损耗建模|数学建模完整代码+建模过程全解全析
  • 用户态缓存:链式缓冲区(Chain Buffer)
  • 【python设计模式6】行为型模式1
  • 高校心理辅导:Spring Boot技术实现
  • 强化学习基础:主要算法框架与Python实现示例
  • 【高级编程】XML DOM4J解析XML文件(含案例)