- 2024-07-15thinkphp5.1水平分表实践(一)
在thinkphp5.1中可以使用partition方法进行水平分表功能,但其分表功能较简单,不适用某些特殊场景。其在TP中的实现逻辑如下:文件路径:thinkphp\library\think\db\Query.php (555行)/***得到分表的的数据表名*@accesspublic*@paramarray$data操作的数
- 2023-06-21thinkphp5.1 钩子使用技巧
钩子使用的两种方法监听钩子行为Hook::listen('钩子名称','参数','是否只有一次有效返回值');还有给行为绑定钩子Hook::add('app_init','app\\index\\behavior\\CheckLang');第一种:直接执行行为//执行app\index\behavior\CheckAuth行为类的run方法并引用传入params参
- 2023-05-13如何在业务代码中使用 ThinkPHP5.1 封装的容器内反射方法
invokeClass用法:可以不传命名空间实例化(通过反射实例化)$obj=Container::getInstance()->invokeClass(InvokerTest::class);var_dump($obj->invokerNews());die;-----------------------------------------------------------------------invokeMethod用法:传入带命名空间的类和
- 2023-05-12浅谈一下ThinkPHP5.1实现事务嵌套的特性
前言: 在我们平时做的一个项目中,线上环境突然发现数据库被锁住。导致很多有关数据插入和修改的接口全都瘫痪,项目基于ThinkPHP5.1。报错的时候,我们发现了一条sql错误日志,如下。 根据错误信息提示,是说有一个事务回滚时没有找到savepoint的暂存点。所以问题应该
- 2023-04-07查看常用thinkphp3.2.x和thinkphp5.1.x版本方法
1、Thinkphp3.2.x在\ThinkPHP\ThinkPHP.php文件中直接查找,例如//版本信息constTHINK_VERSION='3.2.4'; 2、由于tp3.2本身定义了版本信息的常量,所以也可以通过在控制器中打印版本信息的方法进行查看echoTHINK_VERSION; 3、查看tp5.1.x的版本信息方法一
- 2022-12-22ThinkPHP5.1路由改进
thinkphp/library/think/route/Rule.php第794行:protectedfunctiondispatch($request,$route,$option){if($routeinstanceof\Closure){
- 2022-10-14thinkphp5.1全局验证层封装
1.在很多场景下我们都要对表单提交的数据进行验证,那么如何实现一个验证的重复使用呢,那就让我们来封装一个全局的验证层吧!首先我们创建validate,如下图这样,我们文件夹下就出现
- 2022-10-10thinkphp5.1反序列化RCE
thinkphp5反序列化RCEthinkphp5.1.37-5.1.41NewStarCTF第三周Web题目MaybeYouHaveTothinkMoreThinkPHP5框架反序列化RCE正好来研究一下php框架反序列化php反
- 2022-10-08Thinkphp5.1应用初探
直接审计tp的话应该会很有难度,不妨先了解一些tp内置规则和用法,便于在后续的审计中更好的理解代码含义。源码下载链接ThinkPHP5.1开发手册安装没有composer可以去下
- 2022-09-23ThinkPHP5.1 交互式命令
前言: 在平时项目中,有时需要对某些业务进行批处理,比如为了版本兼容,或者不同系统的数据同步等场景下,我们会选择自定义一些指令定时或即时的执行。