php-defer / php-defer
Golang's defer statement for PHP
Installs: 267 607
Dependents: 3
Suggesters: 0
Security: 0
Stars: 294
Watchers: 9
Forks: 16
Open Issues: 0
Requires
- php: ^7.4 || ^8.0
Requires (Dev)
- phpunit/phpunit: ^9.5
README
The defer statement originally comes from Golang. This library allows you to use the defer functionality in your PHP code.
Usage
<?php defer($context, $callback);
defer
requires two parameters: $context
and $callback
.
$context
- unused in your app, required to achieve the "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 ^8.0
.
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.