php-defer/php-defer

PHP 的 Golang defer 语句

v5.0.7 2023-09-21 16:38 UTC

README

Coverage Status Tests status

原始的 defer 语句 来自 Golang。此库允许您在 PHP 代码中使用 defer 功能。

用法

<?php

defer($context, $callback);

defer 需要两个参数: $context$callback

  1. $context - 在您的应用程序中未使用,但需要实现 "defer" 效果。我建议始终使用 $_
  2. $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 的启发。