PHPackages                             windwalker/io - 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. [Framework](/categories/framework)
4. /
5. windwalker/io

ActiveWindwalker-package[Framework](/categories/framework)

windwalker/io
=============

Windwalker IO package

3.5.23(5y ago)115.5k3LGPL-2.0-or-laterPHPPHP &gt;=7.1.3

Since Oct 5Pushed 5y ago3 watchersCompare

[ Source](https://github.com/ventoviro/windwalker-io)[ Packagist](https://packagist.org/packages/windwalker/io)[ Docs](https://github.com/ventoviro/windwalker-io)[ RSS](/packages/windwalker-io/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependencies (2)Versions (82)Used By (3)

Windwalker IO
=============

[](#windwalker-io)

Windwalker IO package is an input &amp; output handler to get request or send output to user terminal.

This package is heavily based on Joomla Input but has modified a lot, please see original concept of [Joomla Wiki](http://docs.joomla.org/Retrieving_request_data_using_JInput).

Installation via Composer
-------------------------

[](#installation-via-composer)

Add this to the require block in your `composer.json`.

```
{
    "require": {
        "windwalker/io": "~3.0"
    }
}
```

Web Input
---------

[](#web-input)

Mostly, we will need to get request data from http, the `$_GET`, `$_POST` or `$_REQUEST` provides us these data.

But it is very unsafe if we only use super global variables, the Input object can help us get values from these variables and clean every string.

```
use Windwalker\IO\Input;

$input = new Input;

$input->get('flower'); // Same as $_REQUEST['flower']

$input->set('flower', 'sakura');
```

The second argument is default value if request params not exists

```
$input->get('flower', 'default');
```

### Filter

[](#filter)

Input use [Windwalker Filter](https://github.com/ventoviro/windwalker-filter) package to clean request string, the default filter type is `CMD`. We can use other filter type:

```
// mysite.com/?flower=to be, or not to be.;

$input->get('flower'); // tobeornottobe (Default cmd filter)

$input->get('flower', 'default_value', InputFilter::STRING); // to be, or not to be

$input->getString('flower'); // to be, or not to be (Same as above, using magic method)

$input->getRaw('flower') // to be, or not to be.
```

More filter usage please see: [Windwalker Filter](https://github.com/ventoviro/windwalker-filter)

### Compact and Get Array

[](#compact-and-get-array)

Get data as an array.

```
// mysite.com/?flower[1]=sakura&flower[2]=olive;

$input->getArray('flower'); // Array( [1] => sakura [2] => olive)

// Get array and filter every values
$input->getArray('flower', null, '.', 'int');
```

Use `compact()` method

```
// mysite.com/?flower=sakura&foo=bar&king=Richard

// Get all request
$input->compact();

// To retrieve values you want
$array(
    'flower' => '',
    'king' => '',
);

$input->compact($array); // Array( [flower] => sakura [king] => Richard)

// Specify different filters for each of the inputs:
$array(
    'flower' => InputFilter::CMD,
    'king' => InputFilter::STRING,
);

// Use nested array to get more complicated hierarchies of values

$input->compact(array(
    'windwalker' => array(
        'title' => InputFilter::STRING,
        'quantity' => InputFilter::INTEGER,
        'state' => 'integer' // Same as above
    )
));
```

### Get And Set Multi-Level

[](#get-and-set-multi-level)

If we want to get value of `foo[bar][baz]`, just use `get('foo.bar.baz')`:

```
$value = $input->get('foo.bar.baz', 'default', InputFilter::STRING);

$input->set('foo.bar.baz', $data);

// Use custom separator
$input->get('foo/bar/baz', 'default', [filter], '/');
$input->set('foo/bar/baz', $data, '/');
```

### Get Value From Other Methods

[](#get-value-from-other-methods)

We can get other methods as a new input object.

```
$post = $input->post;

$value = $post->get('foo', 'bar');

// Other inputs
$get    = $input->get;
$put    = $input->put;
$delete = $input->delete;
```

Get SUPER GLOBALS
-----------------

[](#get-super-globals)

```
$env     = $input->env;
$session = $input->session;
$cookie  = $input->cookie;
$server  = $input->server;

$server->get('REMOTE_ADDR'); // Same as $_SERVER['REMOTE_ADDR'];
```

See: [SUPER GLOBALS](http://php.net/manual/en/language.variables.superglobals.php)

### Get method of current request:

[](#get-method-of-current-request)

```
$method = $input->getMethod();
```

Json Input
----------

[](#json-input)

If you send a request with json body or `content-type: application/json`, you can use `$input->json` to get `JsonInput` and parse json values.

Files Input
-----------

[](#files-input)

The format that PHP returns file data in for arrays can at times be awkward, especially when dealing with arrays of files. FilesInput provides a convenient interface for making life a little easier, grouping the data by file.

Suppose you have a form like:

```

```

Normally, PHP would put these in an array called `$_FILES` that looked like:

```
Array
(
    [flower] => Array
        (
            [name] => Array
                (
                    [test] => Array
                        (
                            [0] => youtube_icon.png
                            [1] => Younger_Son_2.jpg
                        )
                )
            [type] => Array
                (
                    [test] => Array
                        (
                            [0] => image/png
                            [1] => image/jpeg
                        )
                )
            [tmp_name] => Array
                (
                    [test] => Array
                        (
                            [0] => /tmp/phpXoIpSD
                            [1] => /tmp/phpWDE7ye
                        )
                )
            [error] => Array
                (
                    [test] => Array
                        (
                            [0] => 0
                            [1] => 0
                        )
                )
            [size] => Array
                (
                    [test] => Array
                        (
                            [0] => 34409
                            [1] => 99529
                        )
                )
        )
)

```

FilesInput produces a result that is cleaner and easier to work with:

```
$files = $input->files->get('flower');
```

`$files` then becomes:

```
Array
(
    [test] => Array
        (
            [0] => Array
                (
                    [name] => youtube_icon.png
                    [type] => image/png
                    [tmp_name] => /tmp/phpXoIpSD
                    [error] => 0
                    [size] => 34409
                )

            [1] => Array
                (
                    [name] => Younger_Son_2.jpg
                    [type] => image/jpeg
                    [tmp_name] => /tmp/phpWDE7ye
                    [error] => 0
                    [size] => 99529
                )

        )
)

```

CLI Input &amp; Output
----------------------

[](#cli-input--output)

Please see [Cli README](Cli)

###  Health Score

35

—

LowBetter than 79% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity21

Limited adoption so far

Community10

Small or concentrated contributor base

Maturity73

Established project with proven stability

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

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 ~27 days

Recently: every ~71 days

Total

80

Last Release

2101d ago

Major Versions

2.1.9 → 3.0-beta2016-07-04

PHP version history (3 changes)2.0.0-alphaPHP &gt;=5.3.10

3.2PHP &gt;=5.5.9

3.5PHP &gt;=7.1.3

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/1639206?v=4)[Simon Asika](/maintainers/asika32764)[@asika32764](https://github.com/asika32764)

---

Top Contributors

[![asika32764](https://avatars.githubusercontent.com/u/1639206?v=4)](https://github.com/asika32764 "asika32764 (75 commits)")

---

Tags

clihttpinputiopsr7-requestrequestframeworkiowindwalker

### Embed Badge

![Health badge](/badges/windwalker-io/health.svg)

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

###  Alternatives

[windwalker/renderer

Windwalker Renderer package

864.9M25](/packages/windwalker-renderer)[windwalker/crypt

Windwalker Crypt package

1392.2k6](/packages/windwalker-crypt)

PHPackages © 2026

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