dhii/io-resource-interface

资源互操作接口

dev-develop 2017-10-01 20:27 UTC

This package is auto-updated.

Last update: 2024-09-07 03:28:50 UTC


README

Build Status Code Climate Test Coverage Latest Stable Version This package complies with Dhii standards

资源互操作接口。

详细信息

本包旨在实现以下主要目标

  1. 提供一种独立于 PSR-7 的流互操作性标准。PSR-7 标准庞大且难以处理,我们认为流的概念与 HTTP 消息是分离的,因为许多输入和输出的消费者并不关心或需要关心输入或输出的指向。例如,stdout 与 HTTP 或网络本身无关。相反,应使用可互操作的流来写入或读取数据,而不管来源或目标。
  2. 恢复 ISP 流互操作标准。PSR-7 标准将流的许多功能聚合在一个大接口中。这是非 SOLID 的,因为消费者可能只想向流写入,而流甚至可能不可读;反之亦然。同时,使用 ISP,可以使用 instanceof 操作符来检测流的属性,这是干净的,我们认为这是更正确的。
  3. 与现有的 Dhii 标准保持兼容。因此,流转换为字符串的能力被正式化,这意味着可以在期望 stringable 值的地方提供可读流,这非常方便。
  4. 抽象“资源”的概念。所有流在广义上都是资源,但并非所有资源都是流。资源对象可以允许写入内存中的变量,而不仅仅是实际的流或文件。数据库连接也可以是资源,人们可以通过写入此类资源来执行查询。

兼容性

此包中的接口主要与 PSR-7 中定义的 StreamInterface 接口兼容,尽管将其分割成更独立的部分。一个主要区别是 ReadableResourceInterface#__toString() 不需要将资源指针移至开头,但可能只返回内容的剩余部分。这主要是因为定位能力与读取能力是分开的。如果实现希望与 StreamInterface#__toString() 的行为兼容,则鼓励检测可定位性并在可能的情况下执行重置。

接口