闭包函数PHP官方文档定义了闭包函数:匿名函数(Anonymousfunctions),也称为闭包函数(closures),允许临时创建一个没有指定名称的函数。最常用作回调函数(callback)参数的值。当然,还有其他应用程序。简单来说,闭包函数也是一种数据类型,可以直接使用变量来进行存储、传参、调用等操作。Transaction事务简单来说就是一个核心:事务处理可以用来维护数据库的完整性,保证批次的SQL语句要么全部执行,要么根本不执行。一般情况下,每条SQL的执行都需要进行判断。如果执行成功,则继续,否则回滚事务。下面是PDO事务代码:$pdo=newPDO('mysql:host=localhost;dbname=demo','root','root');try{$pdo->beginTransaction();//todo业务代码$pdo->commit();}catch(\Exception$e){$pdo->rollBack();throw$e;}PHP实现了几乎所有需要处理的事务,但是这种方式重复代码太多,其实只需要关心的部分就是业务代码部分,使用闭包函数就可以解决这个问题很好。闭包函数可以理解为具体的业务逻辑,没有任何与事务相关的操作。如果发生异常,事务将自动回滚。PHP的简单实现代码如下:functiontransaction(PDO$pdo,callable$callable){try{$pdo->beginTransaction();$result=call_user_func($callable,$pdo);$pdo->提交();返回$结果;}catch(\Exception$e){$pdo->rollBack();扔$e;}}PHP调用方法代码如下:transaction($pdo,function(PDO$pdo){return$pdo->query('INSERTINTO`test`VALUES(1)');});结论在生产中使用闭包函数来简化样板代码是很常见的,具体的设计模式应该类似于“模板方法模式”。来自我的博客:https://www.ddhigh.com/2019/0...
