jgswift / qio
PHP 5.5+ I/O 工具包
0.1.2
2014-10-05 07:28 UTC
Requires
- php: >=5.5
- jgswift/kenum: 0.1.*
- jgswift/kfiltr: 0.1.*
- jgswift/observr: 0.2.*
- jgswift/qtil: 0.1.*
Requires (Dev)
- phpunit/phpunit: 3.7.*
- satooshi/php-coveralls: dev-master
This package is not auto-updated.
Last update: 2024-09-28 14:52:31 UTC
README
PHP 5.5+ I/O 工具包
安装
通过 CLI 使用 composer 安装
php composer.phar require jgswift/qio:0.1.*
通过 composer.json 使用 composer 安装
{
"require": {
"jgswift/qio": "0.1.*"
}
}
描述
qio 是一组用于在 PHP 中抽象流应用程序的工具。PHP 已经提供了一套庞大而健壮的流处理实现,在许多情况下,qio 主要作为原生流处理的面向对象的抽象。然而,qio 还提供了位流、目录缓存、文件上传、通用资产管理以及管道的补充实现。
依赖
- php 5.5+
- jgswift/qtil - 通用工具库
- jgswift/kfiltr - 过滤、映射和钩子实现
- jgswift/observr - 观察者模式实现
- jgswift/kenum - 枚举实现
使用方法
文件写入器
以下是一个文件流处理的简单示例
// WRITING DATA $file = new qio\File('myfile.txt'); $stream = new qio\File\Stream($file,qio\Stream\Mode::ReadWriteTruncate); $writer = new qio\File\Writer($stream); $stream->open(); $writer->write('foobar'); $stream->close();
文件读取器
// READING DATA $file = new qio\File('myfile.txt'); $stream = new qio\File\Stream($file,qio\Stream\Mode::Read); $reader = new qio\File\Reader($stream); $stream->open(); $value = $reader->readAll(); $stream->close(); var_dump($value); // prints "foobar"
目录读取器
目录读取与上述文件操作概念类似
$dir = new qio\Directory(__DIR__); $stream = new qio\Directory\Stream($dir); $reader = new qio\Directory\Reader($stream); $stream->open(); while($info = $reader->read()) { echo $info->getPath()."\n"; // PRINTS PATH } $stream->close();
内存写入器
这是一个处理字节读取/写入的内存流
// WRITING BYTES $file = new qio\File('myfile.txt'); $stream = new qio\File\Stream($file,qio\Stream\Mode::ReadWriteTruncate); $writer = new qio\Memory\Writer($stream); $stream->open(); $writer->writeString('test'); $writer->writeInteger(4); $writer->writeBoolean(true); $stream->close();
内存读取器
// READING BYTES $file = new qio\File('myfile.txt'); $stream = new qio\File\Stream($file,qio\Stream\Mode::Read); $reader = new qio\Memory\Reader($stream); $stream->open(); $string = $reader->readString(); $int = $reader->readInteger(); $bool = $reader->readBoolean(); $stream->close(); var_dump($string,$int,$bool); // PRINTS 'test', 4, true
对象写入器
通过在序列化写入器内部包装文件写入器来动态序列化数据
class User { public $name; } $user = new User; $user->name = 'test'; $file = new qio\File('myfile.txt'); $stream = new qio\File\Stream($file,qio\Stream\Mode::ReadWriteTruncate); $writer = new qio\Object\Serial\Writer( new qio\File\Writer($stream) ); $stream->open(); $writer->write($user); // write user to stream $stream->close();
对象读取器
通过在序列化读取器中包装文件读取器来反序列化序列化数据
$file = new qio\File('myfile.txt'); $stream = new qio\File\Stream($file,\qio\Stream\Mode::Read); $reader = new qio\Object\Serial\Reader( new qio\File\Reader($stream) ); $stream->open(); $user = $reader->read(); // read user from stream $stream->close(); var_dump($user); // User#object { "name" => "test" }
读取器管道
自动从源流读取输入数据并将其写入输出流的管道
$myfile = new qio\File('myfile.txt'); $otherfile = new qio\File('otherfile.txt'); $source = new qio\File\Stream($file,qio\Stream\Mode::Read); $target = new qio\File\Stream($otherfile,qio\Stream\Mode::ReadWriteTruncate); $reader = new qio\File\Reader($source); $writer = new qio\File\Writer($target); $source->open(); $target->open(); $reader->pipe($writer); $source->close(); $target->close();