jumpifbelow/php-resource-class

一套用于优雅地处理资源的类,将资源转换为对象

0.4.0 2019-08-09 10:21 UTC

This package is auto-updated.

Last update: 2024-09-09 21:25:40 UTC


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);

安全注意事项

请注意,序列化一个由带凭证创建的资源对象可能是不安全的。这些凭证将被存储。所以如果字符串存储在文件中,你基本上是将凭证清晰地放在文件中。你必须确保你对序列化所做的事情,我对你的任何不良做法不负责。