liamja / defer
dev-master
2018-02-18 17:39 UTC
Requires
- php: >=5.3.3
Requires (Dev)
- phpunit/phpunit: ^4.0
This package is not auto-updated.
Last update: 2024-09-29 06:02:29 UTC
README
推迟函数或可调用对象的调用。
为什么?
来自 Go by Example
Defer 用于确保在程序执行过程中稍后执行函数调用,通常用于清理。在需要使用其他语言的
ensure
和finally
的场景中,经常使用defer
。
常见用例包括
- 清理临时文件。
- 关闭网络连接。
- 关闭数据库连接。
将 defer
与 finally
比较,这种 defer
的实现将允许我们更好地控制延迟函数的调用时机;我们可以决定何时开始堆叠延迟函数,以及在哪里最终调用它们。
示例
用法
// Create an instance of Defer. // When $defer falls out of scope, the deferred callables will be called in reverse order. $defer = new Defer; // Push your deferred tasks to the $defer object. $defer->push(function () { echo "I'm echoed last!"; }); // As a convenience, you can also call $defer as a function $defer(function () { echo "I'm echoed second!"; }); echo "I'm called first!";
关闭资源
Defer 可以用于确保关闭打开的文件
$fp = fopen('/tmp/file', 'w'); $defer(function () use ($fp) { fclose($fp); }); fwrite($fp, 'Some temporary data.');