强制在 PHP 中处置对象
发布日期 作者 Paul Redmond
由 using PHP 包提供的 Ryan Chandler 强制在 PHP 中处置对象。受 Hack 和 C# 的启发,此包在使用文件句柄时非常有用
✨ 刚刚发布了一个新的包,它将伪处置引入到你的 PHP 代码中。受 Hack 和 C# 的启发,`using()` 函数和 `Disposable` 接口将强制处置对象。在使用文件句柄等时很有用。 https://t.co/aEd0jje9mR
— Ryan Chandler (@ryangjchandler) 2021 年 10 月 19 日
该包包含一个 `Disposable` 接口和一个全局 `using()` 函数,以确保对象处置。
鉴于以下类在 自述文件 中
use RyanChandler\Using\Disposable; class TextFile implements Disposable{ private $resource; public function dispose(): void { $this->resource = fclose($this->resource); }}
`using()` 帮助器确保即使在异常事件中也会通过 `finally` 调用 `dispose()` 方法
// Simple `using()` implementationfunction using(Disposable $disposable, callable $callback): void{ try { $callback($disposable); } finally { $disposable->dispose(); }} // Example usage$file = new TextFile('hello.txt');using($file, function (TextFile $file) { DB::create('messages', [ 'message' => $file->contents(), ]);}); // The `$resource` property is no-longer a valid stream,// since we closed the handle in the `dispose` method.var_dump($file->resource);
您可以在 GitHub 上了解有关此包的更多信息,获取完整的安装说明,并查看 源代码。在 C# 中,您可以了解更多有关 using 语句 的信息,该语句启发了此包。