PHPackages                             jgswift/qio - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [File &amp; Storage](/categories/file-storage)
4. /
5. jgswift/qio

ActiveLibrary[File &amp; Storage](/categories/file-storage)

jgswift/qio
===========

PHP 5.5+ I/O utility package

0.1.2(11y ago)611011MITPHPPHP &gt;=5.5

Since Sep 11Pushed 11y ago1 watchersCompare

[ Source](https://github.com/jgswift/qio)[ Packagist](https://packagist.org/packages/jgswift/qio)[ RSS](/packages/jgswift-qio/feed)WikiDiscussions master Synced yesterday

READMEChangelog (2)Dependencies (6)Versions (3)Used By (1)

qio
===

[](#qio)

PHP 5.5+ I/O utility package

[![Build Status](https://camo.githubusercontent.com/142c744d04f5e3507071f5aa2d9c7e9d6907e8e4daf487cdaa04ab7e6d8beecc/68747470733a2f2f7472617669732d63692e6f72672f6a6773776966742f71696f2e706e673f6272616e63683d6d6173746572)](https://travis-ci.org/jgswift/qio)[![Scrutinizer Code Quality](https://camo.githubusercontent.com/d13da6f4d5d1e77ec59d96fbdbb03b7f749154ef9826275cf23250a437f8ccd2/68747470733a2f2f7363727574696e697a65722d63692e636f6d2f672f6a6773776966742f71696f2f6261646765732f7175616c6974792d73636f72652e706e673f733d63636234653131653766656531343334353738326531303538373532383963663663343266356434)](https://scrutinizer-ci.com/g/jgswift/qio/)[![Latest Stable Version](https://camo.githubusercontent.com/8ca860037c27b3b094e2e4292392783ea96a3b573fbfb67e4ec145fd222739b1/68747470733a2f2f706f7365722e707567782e6f72672f6a6773776966742f71696f2f762f737461626c652e737667)](https://packagist.org/packages/jgswift/qio)[![License](https://camo.githubusercontent.com/a40a51a7fd93cab22a6156d210eedea10f9c2c349193e0bd44380abea6d168f0/68747470733a2f2f706f7365722e707567782e6f72672f6a6773776966742f71696f2f6c6963656e73652e737667)](https://packagist.org/packages/jgswift/qio)[![Coverage Status](https://camo.githubusercontent.com/073cd6ede2a7b1bdf8db3f3cc2532ff55e4dc37060d6c3158640fd4a78f2d047/68747470733a2f2f636f766572616c6c732e696f2f7265706f732f6a6773776966742f71696f2f62616467652e706e673f6272616e63683d6d6173746572)](https://coveralls.io/r/jgswift/qio?branch=master)

Installation
------------

[](#installation)

Install via cli using [composer](https://getcomposer.org/):

```
php composer.phar require jgswift/qio:0.1.*
```

Install via composer.json using [composer](https://getcomposer.org/):

```
{
    "require": {
        "jgswift/qio": "0.1.*"
    }
}
```

Description
-----------

[](#description)

qio is a group of utilities meant to abstract stream applications in php. php already provides a large and robust implementation for handling streams and in many cases qio mainly serves as an OOP abstraction around native stream handling. However, qio also provides supplemental implementations for bitwise streaming, directory caching, file uploading, general asset management, and piping

Dependency
----------

[](#dependency)

- php 5.5+
- [jgswift/qtil](http://github.com/jgswift/qtil) - general utility library
- [jgswift/kfiltr](http://github.com/jgswift/kfiltr) - filter, map, and hook implementation
- [jgswift/observr](http://github.com/jgswift/observr) - observer pattern implementation
- [jgswift/kenum](http://github.com/jgswift/kenum) - enumerator implementation

Usage
-----

[](#usage)

### File Writer

[](#file-writer)

The following is a minimal example of file stream handling

```
// 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();
```

### File Reader

[](#file-reader)

```
// 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"
```

### Directory Reader

[](#directory-reader)

Directory reading is conceptual similar to the above file operations

```
$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();
```

### Memory Writer

[](#memory-writer)

Here is a memory stream that handles bytes reading/writing

```
// 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();
```

### Memory Reader

[](#memory-reader)

```
// 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
```

### Object Writer

[](#object-writer)

Serialize data on the fly by wrapping the file writer inside of a serial writer

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

### Object Reader

[](#object-reader)

Unserialize serial data by wrapping a file reader with a serial reader

```
$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" }
```

### Reader Piping

[](#reader-piping)

Pipe reads input data from a source stream and writes it to an output stream automatically

```
$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();
```

###  Health Score

26

—

LowBetter than 43% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity16

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity49

Maturing project, gaining track record

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~23 days

Total

2

Last Release

4238d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/e60e96f18d8a9dc2aff1363eedbaf210acc96666e7497d2a83d5a416ef397295?d=identicon)[jgswift](/maintainers/jgswift)

---

Tags

streamphpfilesystemutilityio

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/jgswift-qio/health.svg)

```
[![Health](https://phpackages.com/badges/jgswift-qio/health.svg)](https://phpackages.com/packages/jgswift-qio)
```

###  Alternatives

[jmathai/s3-bucket-stream-zip-php

PHP library to efficiently stream contents from an AWS S3 bucket or folder as a zip file

56114.4k](/packages/jmathai-s3-bucket-stream-zip-php)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
