windwalker / io
Windwalker IO 包
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-09-18 14:32:59 UTC
README
Windwalker IO 包是一个用于获取请求或向用户终端发送输出的输入/输出处理程序。
此包基于 Joomla 输入,但进行了大量修改,请参阅Joomla Wiki中的原始概念。
通过 Composer 安装
将以下内容添加到您的 composer.json
中的 require 块。
{ "require": { "windwalker/io": "~3.0" } }
Web 输入
通常,我们需要从 http 获取请求数据,$_GET
、$_POST
或 $_REQUEST
提供这些数据。
但如果只使用超级全局变量,则非常不安全,输入对象可以帮助我们从这些变量中获取值并对每个字符串进行清理。
use Windwalker\IO\Input; $input = new Input; $input->get('flower'); // Same as $_REQUEST['flower'] $input->set('flower', 'sakura');
第二个参数是如果请求参数不存在时的默认值
$input->get('flower', 'default');
过滤器
输入使用 Windwalker Filter 包来清理请求字符串,默认过滤器类型是 CMD
。我们可以使用其他过滤器类型
// 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>
更多过滤器使用请参阅:Windwalker Filter
紧凑型和获取数组
以数组的形式获取数据。
// 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');
使用 compact()
方法
// 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 ) ));
获取和设置多级
如果我们想获取 foo[bar][baz]
的值,只需使用 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, '/');
从其他方法获取值
我们可以将其他方法作为新的输入对象获取。
$post = $input->post; $value = $post->get('foo', 'bar'); // Other inputs $get = $input->get; $put = $input->put; $delete = $input->delete;
获取超级全局变量
$env = $input->env; $session = $input->session; $cookie = $input->cookie; $server = $input->server; $server->get('REMOTE_ADDR'); // Same as $_SERVER['REMOTE_ADDR'];
获取当前请求的方法
$method = $input->getMethod();
JSON 输入
如果您发送带有 JSON 主体或 content-type: application/json
的请求,则可以使用 $input->json
获取 JsonInput
并解析 JSON 值。
文件输入
PHP 返回数组格式的文件数据有时可能很尴尬,尤其是处理文件数组时。FilesInput 提供了一个方便的接口,可以按文件分组数据,使生活更加轻松。
假设您有一个如下表单
<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>
通常,PHP 会将这些数据放入名为 $_FILES
的数组中,如下所示
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 生成的结果更干净,更容易处理
$files = $input->files->get('flower');
$files
然后
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 输入和输出
请参阅 Cli README