thinkphp
slongzhang_
这个作者很懒,什么都没留下…
展开
-
thinkphp5.*模型增加duplicate方法|tp5、tp5.1增加duplicate方法
tp6自带了duplicate方法了,但一些老项目用的是tp5和5.1是不支持duplicate的,这时候如果需要用到duplicate 就需要我们自己去实现了。原创 2023-06-15 17:35:12 · 268 阅读 · 0 评论 -
TP6手册理解之架构·事件
官方定义: 新版的事件系统可以看成是5.1版本行为系统的升级版,事件系统相比行为系统强大的地方在于事件本身可以是一个类,并且可以更好的支持事件订阅者。事件相比较中间件的优势是事件比中间件更加精准定位(或者说粒度更细),并且更适合一些业务场景的扩展。例如,我们通常会遇到用户注册或者登录后需要做一系列操作,通过事件系统可以做到不侵入原有代码完成登录的操作扩展,降低系统的耦合性的同时,也降低了BUG的可能性。官方文档东扯一句西扯一句,看到云里雾里完全不知道该怎么用,下面整理下网上查找到的事件用法资料1.原创 2021-08-23 00:20:53 · 38888 阅读 · 1 评论 -
TP6手册理解之架构·服务
官方定义:系统服务的概念是指在执行框架的某些组件或者功能的时候需要依赖的一些基础服务,服务类通常可以继承系统的think\Service类,但并不强制(如果继承think\Service的话可以直接调用this->app获取应用实例)。原创 2021-08-22 23:28:23 · 39309 阅读 · 0 评论 -
TP6手册理解之架构·容器和依赖注入
依赖注入其实本质上是指对类的依赖通过构造器完成自动注入,例如在控制器架构方法和操作方法中一旦对参数进行对象类型约束则会自动触发依赖注入,由于访问控制器的参数都来自于URL请求,普通变量就是通过参数绑定自动获取,对象变量则是通过依赖注入生成。原创 2021-08-22 21:23:44 · 39955 阅读 · 0 评论 -
TP6多态笔记
最近研究pearAdmin TP版时看到了获取用户权限时with关联查询的时候,看到了没理解的语句,后面查询了解到是多态用法,下面附上代码 // 用户的所有权限 public static function permissions($id,$root) { // $aaa = self::with(['roles.permissions', 'directPermissions'])->fetchSql(true)->find($id); //原创 2021-08-08 18:34:15 · 376 阅读 · 1 评论 -
tp6关联模型LEFT JOIN查询
1.创建模型User、模型Profile# 模型User<?phpnamespace app\common\model;use think\Model;class User extends Model{ public function profile() { return $this->hasOne(Profile::class, 'profile的字段', 'user的字段'); }}?># 模型Profile<?ph原创 2021-05-26 14:53:14 · 44410 阅读 · 1 评论 -
tp6中间件如何获取应用名称、控制器、方法?
根据Tp6手册的常规中间件设置,全局中间件是无法获取到应用和控制器、方法名的public function handle($request, \Closure $next){ $appName = app('http')->getName(); $controller = $request->controller(); $action = $request->action();}解决办法:1、在config的route.php文件追加定义:'middleware'转载 2021-05-24 11:56:08 · 2684 阅读 · 0 评论 -
tp自定义异常抛出
throw new \think\exception\HttpException(404, '抛出接口错误');throw new \think\Exception('抛出系统错误');原创 2021-05-15 13:57:34 · 316 阅读 · 0 评论 -
tp6子查询匿名函数
$mid = 3; $modelSellerOrders = new SellerOrders(); // 实例化seller_orders表模型 $result = $modelSellerOrders->where('id', 'in', function ($query) use($mid) { $query->name('seller_orders')->where('mid', $mid)->field('min(id) as id')-&.原创 2021-05-14 14:43:46 · 440 阅读 · 0 评论 -
php配合redis设置登录风控
/** * 登录风控,可以登录返回true,不可登录返回剩余时间戳 * 除了用户名主键外,还可以设置下ip主键,进一步提高风控级别 */function login_risk($username){ $ip = get_client_ip();// 获取用户ip // 判断是否可以登录,如果被禁止登录则提示用户不可登录 $redis = new Redis(); // 实例化redis对象 #... 设置相关redis配置 $redis_key = 'slon原创 2021-05-13 10:22:51 · 248 阅读 · 0 评论 -
ThinkPHP6中间件,后置操作修改输出数据
<?phpdeclare (strict_types = 1);namespace app\index\middleware;class After{ /** * 处理请求 * * @param \think\Request $request * @param \Closure $next * @return Response */ public function handle($request, \C原创 2021-05-12 14:29:39 · 1235 阅读 · 2 评论 -
tp6控制器initialize方法拦截,重定向
<?php// +----------------------------------------------------------------------// | 不懈努力,只为遇见更好的自己// +----------------------------------------------------------------------// | Copyright (c) 2020 http://www.slong.ink All rights reserved.// +-------原创 2021-05-01 22:25:33 · 39962 阅读 · 1 评论 -
tp配置邮箱发送邮件
一、获取邮箱的授权码(这里以126邮箱为案例)1.登录邮箱,点击设置2.开启IMAP|SMTP 或 POP3|SMTP服务3.获取授权码到授权码标题二、下载邮箱类库1.使用composer安装phpmailer(推荐使用此方法) composer require phpmailer/phpmailer2.手动下载引用[下载地址](https://github.com/PHPMailer/PHPMailer):https://github.com/PHPMailer/PHPMailer原创 2021-04-30 16:14:44 · 2136 阅读 · 3 评论 -
ThinkPHP6.0 扩展类库目录(extend)
本文转自 辰风沐阳 的 ThinkPHP6.0 扩展类库目录(extend)框架根目录下的 extend 目录称为扩展类库目录,用于存放一些自定义的类,只要符合自动加载的规范(命名空间、类名、文件名),就可以拿来直接使用1. extend 目录的直接子内容假设在 extend 目录下创建一个 Upload.php 文件,如果是 extend 目录的直接子内容则不需要添加命名空间<?phpclass Upload{ }此时可以在控制器中直接使用 \Upload 类,特别注意命转载 2020-10-05 15:42:37 · 100824 阅读 · 0 评论