PHP Defer
A defer statement originally comes from Golang. This library allows you to use defer functionality in PHP code.
Usage
<?php
defer($context, $callback);
defer
requires two parameters: $context
and $callback
.
$context
- unused in your app, required to achieve "defer" effect. I recommend to use$_
always.$callback
- a callback which is executed after the surrounding function returns.
Examples
Defer the execution of a code
<?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
Defer and exceptions
<?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
Installation
PHP Defer supports all PHP versions from ^5.3
to ^7.4
. The following command will install the latest possible version of PHP Defer for your PHP interpreter.
composer require "php-defer/php-defer:^3.0|^4.0|^5.0"
Credits
This library is inspired by mostka/defer.