在事务中使用闭包函数简化开发

栏目: PHP · 发布时间: 6年前

内容简介:PHP官方文档对于闭包函数的定义:匿名函数(Anonymous functions),也叫闭包函数(closures),允许 临时创建一个没有指定名称的函数。最经常用作回调函数(callback)参数的值。当然,也有其它应用的情况。简单来说,闭包函数也是一种数据类型,可以直接使用变量来存储、传参、调用等等。

PHP官方文档对于闭包函数的定义:

匿名函数(Anonymous functions),也叫闭包函数(closures),允许 临时创建一个没有指定名称的函数。最经常用作回调函数(callback)参数的值。当然,也有其它应用的情况。

简单来说,闭包函数也是一种数据类型,可以直接使用变量来存储、传参、调用等等。

事务

事务简单来说就是一个核心:

事务处理可以用来维护数据库的完整性,保证成批的 SQL 语句要么全部执行,要么全部不执行。

一般情况下,每一条SQL的执行情况都需要进行判断,如果执行成功则继续,否则回滚事务。以下是PDO事务代码:

$pdo = new PDO('mysql:host=localhost;dbname=demo', 'root', 'root');
try {
    $pdo->beginTransaction();
    //todo 业务代码
    $pdo->commit();
} catch (\Exception $e) {
    $pdo->rollBack();
    throw $e;
}

PHP实现

几乎所有事务都需要如此处理,但是这样重复代码太多,实际上只需要关心的部分是 业务代码 部分,使用闭包函数可以很好的解决这个问题。

闭包函数可以理解为具体的业务逻辑,不带任何事务相关操作,如果出现异常,会自动回滚事务。

PHP的简单实现代码如下:

function transaction(PDO $pdo, callable $callable)
{
    try {
        $pdo->beginTransaction();
        $result = call_user_func($callable, $pdo);
        $pdo->commit();
        return $result;
    } catch (\Exception $e) {
        $pdo->rollBack();
        throw $e;
    }
}

PHP调用方法代码如下:

transaction($pdo, function (PDO $pdo){
    return $pdo->query('INSERT INTO `test` VALUES (1)');
});

结语

使用闭包函数去简化样板代码在生产中是很常见的,具体的 设计模式 应该是类似“模板方法模式”。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

创业者手册

创业者手册

[美] 史蒂夫·布兰克、[美] 鲍勃·多夫 / 新华都商学院 / 机械工业出版社 / 2013-1 / 89.00元

我们发现,企业的成功程度和创始人使用本书的频繁程度成正比。书中折角越多,书被翻得越破,企业取得的成功就越显著。阅读本书切忌囫囵吞枣。 所有创业者都坚信自己的道路与众不同,他们在踏上创业之路时从不设计路线图,认为其他模式或模板并不适合自己。同样是初创企业,有些能够取得成功而有些只能沦落到廉价清库的下场,看起来这似乎是运气使然,然而事实并非如此。英雄成功的故事都是一样的。初创企业实现成功之路肯定......一起来看看 《创业者手册》 这本书的介绍吧!

MD5 加密
MD5 加密

MD5 加密工具

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具