测试php中接收call_user_func_array抛出的异常

2023-10-30

1,首先新建一个mytest数据表,表引擎注意使用的innodb;

CREATE TABLE `mytest` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(30) NOT NULL DEFAULT '',
  `rand_number` int(11) NOT NULL DEFAULT '0' COMMENT '随机数字',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;

2,开始测试,这里我使用的thinkphp5.1的框架来测试。

   public function test5() {
        Db::startTrans();
        try {
            Db::name('mytest')->insert(['name' => 'one', 'rand_number' => rand(1, 100)]);
            call_user_func_array([new self, 'test6'], [1,'zhangsan']);
            Db::name('mytest')->insert(['name' => 'two', 'rand_number' => rand(1, 100)]);
            Db::commit();
        } catch (Exception $e) {
            //由于call_user_func_array中调用的回调抛出了异常,所以回滚了。
            Db::rollback();
            return $e->getMessage();
        }

        return 'success';
    }

    public function test6($id,$name) {
        Db::startTrans();
        try {
            Db::name('mytest')->insert(['name' => 'test6', 'rand_number' => rand(1,100)]);
            throw new Exception('test6 error');
            Db::commit();
        } catch (Exception $e) {
            Db::rollback();
            throw new Exception($e->getMessage());
        }

    }

3,实验结果是可以接收到回调方法里的异常并回滚数据的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

测试php中接收call_user_func_array抛出的异常 的相关文章

  • 纠正装饰器模式的一个大缺点

    不久前 我在重构一些游戏战斗代码时决定尝试装饰器模式 战斗者可以拥有各种被动能力 也可能是不同类型的生物 我认为装饰器可以让我在运行时以各种组合添加行为 因此我不需要数百个子类 我几乎已经完成了 15 个左右的被动能力装饰器 在测试中我发现
  • 让登录更安全

    我已使用此代码进行管理员登录 仅当用户输入正确的用户名和密码时才应打开loginhome php 但后来我意识到这根本不安全 任何人都可以直接访问 mywebsite loginhome php 而无需登录 注销后 可以使用后退按钮打开 l
  • ORDER BY 字段内的 MySQL 子查询。 (没有内连接)

    有很多与此相关的问题 但都具有使用内部联接的相同答案 这 我认为 在这里是不可能的 如果我错了请告诉我 我现在正在做的是调用两个不同的 mysql 查询来获取结果 它工作完美 db gt query SELECT FROM meta WHE
  • Zend Framework 生成唯一的字符串

    我想生成一个唯一的 4 6 个字符长的字母数字字符串 以便与每个记录 用户 一起保存在数据库中 db 字段具有唯一索引 因此尝试保存预先存在的字符串会生成错误 现在我正在生成一个随机字符串并使用 try catch 因此在添加新记录时如果抛
  • openssl_pkey_get_details($res) 不返回公共指数

    我在用着这个例子 https stackoverflow com a 12575951 2016196使用 php 生成的密钥进行 javascript 加密openssl图书馆 但是 details openssl pkey get de
  • 搜索引擎如何找到相关内容? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 Google 在解析网络时如何找到相关内容 例如 Google 使用 PHP 原生 DOM 库来解析内
  • 删除PHP字符串中所有不匹配的字符?

    我有一个文本 我想从中删除所有不属于以下字符的字符 所需字符 0123456789 abcdefghijklmnopqrstuvwxyz n 最后一个是我确实想保留的 n 换行符 要匹配除列出的字符之外的所有字符 请使用反转字符集 http
  • posts_search 中的自定义查询

    如何使用此查询作为我的自定义搜索查询 add filter posts search my search is perfect 20 2 function my search is perfect search wp query sWord
  • 是否可以使用 PHP 重定向发送 POST 数据?

    更新 这不是重复的如何使用 PHP 发送 POST 请求 https stackoverflow com questions 5647461 how do i send a post request with php 那里的解决方案对我不起
  • 从 smarty 访问 PHP 文件的变量(本地或全局)

    我有一个 php 文件 其中包含一些本地和全局变量 例如 foo 从此文件中调用 smarty 对象 如何在不更改 PHP 文件的情况下从 smarty 脚本访问 foo Thanks 如果你有一个名为 BASE 的常量变量 并且定义如下
  • 为什么我需要结束 ob_start()?

    php 文档建议我应该用 ob end flush 结束每个 ob start 我在网站的每个页面上使用一个 只是为了允许我在应用程序中的任何位置使用 firephp 日志方法 该应用程序运行良好 但我想知道是否有任何我不知道的东西可能有害
  • preg_match_all 查询仅显示有问题的外部组

    我无法弄清楚如何只显示 preg 查询的外部组级别 我会给你一个例子 preg match all start end input matches 这个输入start1 start2 2end 1end产生这个输出start1 start2
  • 从 .phar 存档中提取文件

    对于 Phar 文件 我完全错过了一些东西 我正在安装一个需要 phpunit pdepend 和其他依赖项的项目 我将它们作为 phar 文件获取 但是 我无法使用命令行工具 php 命令 从中提取文件 我用谷歌搜索了这个问题 但没有发现
  • Woocommerce 结账自定义选择字段

    我有以下功能 将选择列表添加到 woo commerce 结账表单中 woocommerce form field airport pickup array type gt select class gt array airport pic
  • jQuery Mobile 表单验证

    我有一个移动网站 除了验证之外一切都工作正常 基本上我希望从用户那里获取值 然后在单独的页面 process php 上处理它们 但是 在这样做之前 我需要检查以确保字段已填充 我已经研究了几种方法来做到这一点 但似乎没有一种有效 我现在有
  • PHP 中只保留数组的前 N ​​个元素? [复制]

    这个问题在这里已经有答案了 有没有办法只保留数组的前 N 个 例如 10 个 元素 我知道有array pop 但是有没有更好 更优雅的方法呢 您可以使用array slice http php net array slice or arr
  • 使用 Ajax.Request 将 JSON 从浏览器传递到 PHP 的最佳方法

    您好 我有一个 JSON 对象 它是一个二维数组 我需要使用 Ajax Request 将其传递给 PHP 我知道的唯一方法 现在我使用js函数手动序列化我的数组 并获取以下格式的数据 s 1 d 3 4等 我的问题是 有没有办法更直接 有
  • 跟踪用户何时点击浏览器上的后退按钮

    是否可以检测用户何时单击浏览器的后退按钮 我有一个 Ajax 应用程序 如果我可以检测到用户何时单击后退按钮 我可以显示适当的数据 任何使用 PHP JavaScript 的解决方案都是优选的 任何语言的解决方案都可以 只需要我可以翻译成
  • 表单提交后如何保留选择字段中的选定值?

    我有一个用于将票证上传到数据库的主页 我有一个选择字段 我想保留用户在提交表单之前选择的值 但它没有发生 这是我选择字段的代码
  • Laravel 中只向登录用户显示按钮

    如果我以 John 身份登录 如何才能只显示 John 的红色按钮而不显示 Susan 的红色按钮 测试系统环境 Win10 Laravel5 4 Mysql5 7 19 table class table table responsive

随机推荐

  • MOSFET 导通条件

    MOSFET管是FET的一种 可以被制造为增强型或者耗尽型 P沟道或N沟道共四种类型 但实际应用的只有增强型的N沟道MOS管和增强型的P沟道MOS管 实际应用中 NMOS居多 如何分辨三个极 D极单独位于一边 而G极是第4PIN 剩下的3个
  • 支持IDE最新版!新一代报表工具FastReport VCL v6.7更新详情

    FastReport VCL是用于Delphi C Builder RAD Studio和Lazarus的报告和文档创建VCL库 它提供了可视化模板设计器 可以访问最受欢迎的数据源 报告引擎 预览 将过滤器导出为30多种格式 并可以部署到云
  • 激光条纹中心线提取算法总结和复现

    滤波 分割等预处理过程省略 输入图像为灰度图 激光条纹水平走向 目录 几何中心法 极值法 细化法 灰度重心法 法向质心法 Steger算法 几何中心法 检测出光条边界 l h 后 把两边界的中间线 l h 2作为激光条纹的中心线 inclu
  • Unity访问 FTP-SSL、FTP服务器(记录)

    1 ftps是基于ftp做了层加密 只记录ftps的访问 2 使用的工具 FluentFTP 由于直接导入unity访问文件会报安全句柄错误 因此需要以下操作 3 流程 下载FluentFTP 修改 cs文件 重新编译 dll 原因 Saf
  • 入门级详细USB移植教程——致正在为USB烦恼的朋友

    同上一篇MPU6050一样 我还是写一篇关于USB的帖子 在圈圈等玩USB的大神面前 我掌握的USB知识实在是九牛一毛 所以这篇帖子加上了入门级的修饰语 写这篇帖子主要是为了那些想快速开发USB的人 至于想深入了解USB协议 可以先学完我这
  • Access数据库注入详解

    一个人再冷酷无情 他曾经都单纯过 能有这样的结果 都是被逼的 渗透入坑学废集 前言 注入漏洞分析 网站分类 常见数据库 网站访问模型 漏洞成因 注入漏洞是怎么样形成的 常见的注入流程 注入危害 ACCESS数据库注入详解 ACCESS数据库
  • 【BZOJ】【P1816】【Cqoi2010】【扑克牌】【题解】【水题】

    传送门 http www lydsy com JudgeOnline problem php id 1816 一张图表示我wa了三次的心情 Code include
  • SpringBoot01--运行原理和自动装配原理

    SpringBoot01 一 是什么 二 SpringBoot优点 三 运行原理 四 Springboot注解 五 自动装配原理 三步 是什么 怎么做 为什么 一 是什么 1 Spring Boot是由Pivotal团队提供的全新框架 其设
  • Pycharm缓存文件太大,转移C盘中Pycharm缓存文件

    转移C盘中Pycharm缓存文件 问题 将C盘用户目录下的 Pycharm转移到E盘文件夹下 解决 找到PyCharm的D software pycharm 2019 PyCharm 2019 1 bin 添加4个 在四处红框位置处添加四行
  • Unity3D -- 自动生成动画(AnimationClip)

    我们一个Prefab有很多个子物体 而且当前prefab使用了大量的动画状态 假如想将该Prefab动画更改过的属性在Idle中重新更改过来 一种比较暴力方法就是直接将需要更改的属性在Idle动画中K出来 但如果动画有更改的话 我们就需要更
  • window下配置hosts文件,使虚拟机主机名与IP地址映射

    目录 1 点击此路径 C Windows System32 drivers etc 2 找到hosts并修改 3 然后将写好的hosts文件复制到原先的路径下 替换原文件 4 尝试ping虚拟机的主机名 成功 1 点击此路径 C Windo
  • 图解通信原理与案例分析-5:计算机中央处理器CPU与内存芯片之间的二进制数字信号通信

    引言 我们知道 计算机是一个二进制的世界 相应的硬件电路 我们称为数字电路 与之对应的是模拟电路 相应的可执行的指令 我们称为二进制指令 从计算机的角度来看 只需要关注0和1 不需要关注数字信号的特征 幅度 极性等 也不需要关注如何通过数字
  • for input string:原因及其解决方案

    javascript view plain copy 首先我这里遇到的错误 for input String if 类型 money Double parseDouble 数据库中获取的内容 else if 类型 number Intege
  • StyleGAN新升级

    点击上方 机器学习与生成对抗网络 关注星标 获取有趣 好玩的前沿干货 文章来源 机器之心 编辑部 来自以色列特拉维夫大学的研究者在生成图像方面又有了新的升级 所用方法在保留源图像身份的同时 在细节编辑上实现了更精细的效果 英伟达提出的风格迁
  • 使用动态优先权的进程调度算法 C语言模拟实现 含详细源代码和实验结果

    使用动态优先权的进程调度算法 C语言模拟实现 含详细源代码和实验结果 题目描述 实现对N个进程采用某种进程调度算法 如动态优先权调度 的调度 每个用来标识进程的进程控制块PCB可用结构来描述 包括以下字段 进程标识数ID 进程优先数 PRI
  • CLIP(Contrastive Language-Image Pre-Training)简介

    CLIP Contrastive Language Image Pre Training 利用文本的监督信号训练一个迁移能力强的视觉预训练模型 通过对比学习 训练得到图片和文本的相似度 传闻使用4亿个配对的数据和文本来进行训练 不标注直接爬
  • 打开运行PS、AI等软件时卡在启动窗口的解决办法

    在运行 Adobe Photoshop Illustrator PR等软件时 如果遇到卡在启动页面 可以尝试用下面方法解决 Mac软件资源下载站https mac macsc com id Mjk0ODE5 先将卡住的应用强制退出 左上角
  • 计算机键盘盲打方法,电脑键盘盲打练习方法 盲打键盘指法练习技巧

    小编在小学的时候电脑老师就教过打字 但是那时候还不会盲打 当时各种羡慕会盲打的童鞋 如今已经会盲打了 也想将练习盲打的一些技巧分享给大家 电脑键盘盲打练习方法 盲打键盘指法练习技巧 1 所谓标准指法就是把你的双手依照下图的位置放在键盘上 即
  • chrome - 开发者工具调试技巧

    谷歌浏览器 通常简称为 Chrome 是由谷歌开发的网络浏览器 在开发工作中 Chrome极大的方便开发调试代码 主流的浏览器都内置了 DevTools 掌握 Chrome 的调试技巧 可以提高工作效率 对于测试人员来说 掌握Chrome
  • 测试php中接收call_user_func_array抛出的异常

    1 首先新建一个mytest数据表 表引擎注意使用的innodb CREATE TABLE mytest id int 11 NOT NULL AUTO INCREMENT name varchar 30 NOT NULL DEFAULT