php-defer / php-defer
PHP 的 Golang defer 语句
v5.0.7
2023-09-21 16:38 UTC
Requires
- php: ^7.4 || ^8.0
Requires (Dev)
- phpunit/phpunit: ^9.5
README
原始的 defer 语句 来自 Golang。此库允许您在 PHP 代码中使用 defer 功能。
用法
<?php defer($context, $callback);
defer
需要两个参数: $context
和 $callback
。
$context
- 在您的应用程序中未使用,但需要实现 "defer" 效果。我建议始终使用$_
。$callback
- 在周围函数返回后执行的回调。
示例
延迟代码的执行
<?php function helloGoodbye() { defer($_, function () { echo "goodbye\n"; }); defer($_, function () { echo "...\n"; }); echo "hello\n"; } echo "before hello\n"; helloGoodbye(); echo "after goodbye\n"; // Output: // // before hello // hello // ... // goodbye // after goodbye
延迟与异常
<?php function throwException() { defer($_, function () { echo "after exception\n"; }); echo "before exception\n"; throw new \Exception('My exception'); } try { throwException(); } catch (\Exception $e) { echo "exception has been caught\n"; } // Output: // // before exception // after exception // exception has been caught
安装
PHP Defer 支持 ^5.3
到 ^8.0
的所有 PHP 版本。以下命令将为您的 PHP 解释器安装 PHP Defer 的最新可能版本。
composer require "php-defer/php-defer:^3.0|^4.0|^5.0"
致谢
此库受到了 mostka/defer 的启发。