windwalker / io
Windwalker IO package
Installs: 15 490
Dependents: 3
Suggesters: 0
Security: 0
Stars: 2
Watchers: 4
Forks: 0
Open Issues: 0
Type:windwalker-package
Requires
- php: >=7.1.3
- ext-json: *
Requires (Dev)
- windwalker/filter: ~3.0
- windwalker/test: ~3.0
Suggests
- windwalker/filter: Install 2.* if you require filter support.
- 3.x-dev
- dev-master / 3.x-dev
- 3.5.23
- 3.5.22
- 3.5.21
- 3.5.20
- 3.5.19
- 3.5.18
- 3.5.17
- 3.5.16
- 3.5.15
- 3.5.14
- 3.5.13
- 3.5.12
- 3.5.11
- 3.5.10
- 3.5.9
- 3.5.8
- 3.5.7
- 3.5.6
- 3.5.5
- 3.5.4
- 3.5.3
- 3.5.2
- 3.5.1
- 3.5
- 3.4.9
- 3.4.8
- 3.4.7
- 3.4.6
- 3.4.5
- 3.4.4
- 3.4.3
- 3.4.2
- 3.4.1
- 3.4
- 3.3.2
- 3.3.1
- 3.3
- 3.2.8
- 3.2.7
- 3.2.6
- 3.2.5
- 3.2.4
- 3.2.3
- 3.2.2
- 3.2.1
- 3.2
- 3.1.6
- 3.1.5
- 3.1.4
- 3.1.3
- 3.1.2
- 3.1.1
- 3.1
- 3.0.1
- 3.0
- 3.0-beta2
- 3.0-beta
- 2.1.9
- 2.1.8
- 2.1.7
- 2.1.6
- 2.1.5
- 2.1.4
- 2.1.2
- 2.1.1
- 2.1
- 2.0.9
- 2.0.8
- 2.0.7
- 2.0.6
- 2.0.5
- 2.0.4
- 2.0.3
- 2.0.2
- 2.0.1
- 2.0.0
- 2.0.0-beta2
- 2.0.0-beta1
- 2.0.0-alpha
- dev-test
This package is auto-updated.
Last update: 2024-10-18 14:45:07 UTC
README
Windwalker IO package is an input & 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.
Installation via Composer
Add this to the require block in your composer.json
.
{ "require": { "windwalker/io": "~3.0" } }
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
Input use Windwalker Filter package to clean request string, the default filter type is CMD
.
We can use other filter type:
// mysite.com/?flower=<p>to be, or not to be.</p>; $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') // <p>to be, or not to be.</p>
More filter usage please see: Windwalker Filter
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
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
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
$env = $input->env; $session = $input->session; $cookie = $input->cookie; $server = $input->server; $server->get('REMOTE_ADDR'); // Same as $_SERVER['REMOTE_ADDR'];
See: SUPER GLOBALS
Get method of current request:
$method = $input->getMethod();
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
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:
<form action="..." enctype="multipart/form-data" method="post"> <input type="file" name="flower[test][]" /> <input type="file" name="flower[test][]" /> <input type="submit" value="submit" /> </form>
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 & Output
Please see Cli README