jumpifbelow / php-resource-class
一套用于优雅地处理资源的类,将资源转换为对象
0.4.0
2019-08-09 10:21 UTC
Requires
- php: ^7.1
- jumpifbelow/php-resource-wrapper: ^1.0
Requires (Dev)
- phpunit/phpunit: ^8.0
README
ResourceClass 提高了你使用资源的方式,从过程式到全面支持,带来了许多好处。这意味着你可以轻松地克隆、序列化、反序列化、析构它。哦,它还经过了单元测试。
开发阶段
这个开发版本仍在运行。它可以使用,但尚未经过良好测试。需要为所有类创建单元测试,除了需要专用服务的某些类。由于它仍在开发中,这些文件可能在你的机器上崩溃。请自行承担使用风险。
要做什么?
- 创建所有单元测试
- 添加更多资源?(哪些?)
- 完成 PHP 文档
- 重命名一些名字丑陋的方法(这里需要更多创造力)
- 完成此 README.md
- 使其在 Composer 中可用
它是什么
纯 PHP 只允许使用过程式函数直接使用资源。这有一些问题,比如不知道哪些函数可用,一些函数缺失。它增加了对资源的更多控制,比如允许序列化、自动关闭、复制等。
它不是什么
它不会给资源添加更多函数。这是一个方法上的添加,而不是功能上的添加。cURL 仍然是 cURL,它只会通过使用 OOP 来改变它的风味。
如何安装它?
就像往常一样使用 Composer
composer require jumpifbelow/php-resource-class
有什么区别
过程式方式
<?php
$f = fopen('dummy.txt', 'w');
fwrite($f, 'my data');
$copy = fopen('dummy.txt', 'w'); // needs to reenter same parameters
// hard to serialize
// $serialized = serialize($f); // WON'T WORK
// needs to close everything when we're done
fclose($f);
fclose($copy);
OOP 方式
<?php
use ResourceClass\File;
// simple to now what to use
$f = File::open('dummy.txt', 'w');
$f->write('my data');
// easy to copy
$copy = clone $f;
// now we can do this!
$serialized = serialize($f);
$f = unserialize($serialized);
// and we don't need to close the resource!
// you can still unset, it will close the resource automatically :)
unset($f);
安全注意事项
请注意,序列化一个由带凭证创建的资源对象可能是不安全的。这些凭证将被存储。所以如果字符串存储在文件中,你基本上是将凭证清晰地放在文件中。你必须确保你对序列化所做的事情,我对你的任何不良做法不负责。