andrey-helldar / pretty-array
v4.1.0
2023-06-02 11:37 UTC
Requires
- php: ^8.0
- ext-dom: *
- ext-mbstring: *
- dragon-code/contracts: ^2.20
- dragon-code/support: ^6.11.2
Requires (Dev)
- phpunit/phpunit: ^9.6 || ^10.2
Suggests
- symfony/thanks: Give thanks (in the form of a GitHub) to your fellow PHP package maintainers
This package is auto-updated.
Last update: 2024-02-16 13:58:09 UTC
README
数组到美观视图的简单转换。
安装
要获取 Pretty Array
包的最新版本,只需使用 Composer 引入项目。
composer require dragon-code/pretty-array
当然,您也可以手动更新您的 require
块并运行 composer update
,如果您愿意的话。
{ "require": { "dragon-code/pretty-array": "^4.0" } }
简介
问题:当有更酷的 symfony/var-exporter 时,你为什么还要创建这个包?
包 symfony/var-exporter 的大问题是它与数字键的工作方式不同。
例如,我们有一个数组
$array = [ 100 => 'foo', 200 => 'bar', 201 => 'baz', 202 => 'qwe', 205 => 'ert', 206 => 'tyu' ];
通过它导出时,文件将包含以下内容
$array = [ 100 => 'foo', 200 => 'bar', 'baz', 'qwe', 205 => 'ert', 'tyu' ];
问题:你认为这有什么不好?
此包有一个框架无关的底层。然而,它最初是作为 Laravel Lang: HTTP Statuses 包的辅助工具开发的。
此包允许您为 Laravel 和 Lumen 框架发布 HTTP 状态码的语言翻译。
框架的一个特性是,帮助开发的 IDE 无法读取翻译文件数组的数字键,因此需要将它们转换为文本等效项。
这种行为包括 http-statuses.php 文件
<?php return [ 'unknownError' => 'Unknown Error', '0' => 'Unknown Error', '100' => 'Continue', '101' => 'Switching Protocols', '102' => 'Processing', '200' => 'OK', '201' => 'Created', '202' => 'Accepted', '203' => 'Non-Authoritative Information', '204' => 'No Content', '205' => 'Reset Content', '206' => 'Partial Content', '207' => 'Multi-Status', '208' => 'Already Reported', '226' => 'IM Used', // ...
此包的特点是,它将源文件中的值与应用程序中已有的内容相结合。因此,输出是一个 IDE 辅助工具无法读取的带有数字键的文件
<?php return [ 'unknownError' => 'Unknown Error', 0 => 'Unknown Error', 100 => 'Continue', 'Switching Protocols', 'Processing', 200 => 'OK', '201' => 'Created', 'Accepted', 'Non-Authoritative Information', 'No Content', 'Reset Content', 'Partial Content', 'Multi-Status', 'Already Reported', 226 => 'IM Used', // ...
使用
所有示例的源数组
$array = array ( 'foo' => 1, 'bar' => 2, 'baz' => 3, 'qwerty' => 'qaz', 'baq' => array ( 0 => 'qwe', '1' => 'rty', 'asd' => 'zxc', ), 'asdfgh' => array ( 'foobarbaz' => 'qwe', 2 => 'rty', 'qawsed' => 'zxc', ), 2 => 'iop', );
不进行对齐保存数字键
use DragonCode\PrettyArray\Services\Formatter; $service = Formatter::make(); return $service->raw($array);
结果
[
'foo' => 1,
'bar' => 2,
'baz' => 3,
'qwerty' => 'qaz',
'baq' => [
0 => 'qwe',
1 => 'rty',
'asd' => 'zxc',
],
'asdfgh' => [
'foobarbaz' => 'qwe',
2 => 'rty',
'qawsed' => 'zxc',
],
2 => 'iop',
]
不进行对齐保存字符串键
use DragonCode\PrettyArray\Services\Formatter; $service = Formatter::make(); $service->setKeyAsString(); return $service->raw($array);
结果
[
'foo' => 1,
'bar' => 2,
'baz' => 3,
'qwerty' => 'qaz',
'baq' => [
'0' => 'qwe',
'1' => 'rty',
'asd' => 'zxc',
],
'asdfgh' => [
'foobarbaz' => 'qwe',
'2' => 'rty',
'qawsed' => 'zxc',
],
'2' => 'iop',
]
进行对齐保存数字键
use DragonCode\PrettyArray\Services\Formatter; $service = Formatter::make(); $service->setEqualsAlign(); return $service->raw($array);
结果
[
'foo' => 1,
'bar' => 2,
'baz' => 3,
'qwerty' => 'qaz',
'baq' => [
0 => 'qwe',
1 => 'rty',
'asd' => 'zxc',
],
'asdfgh' => [
'foobarbaz' => 'qwe',
2 => 'rty',
'qawsed' => 'zxc',
],
2 => 'iop',
]
进行对齐保存字符串键
use DragonCode\PrettyArray\Services\Formatter; $service = Formatter::make(); $service->setKeyAsString(); $service->setEqualsAlign(); return $service->raw($array);
结果
[
'foo' => 1,
'bar' => 2,
'baz' => 3,
'qwerty' => 'qaz',
'baq' => [
'0' => 'qwe',
'1' => 'rty',
'asd' => 'zxc',
],
'asdfgh' => [
'foobarbaz' => 'qwe',
'2' => 'rty',
'qawsed' => 'zxc',
],
'2' => 'iop',
]
保存简单数组
use DragonCode\PrettyArray\Services\Formatter; $service = Formatter::make(); $service->setSimple(); return $service->raw($array);
结果
[
1,
2,
3,
'qaz',
[
'qwe',
'rty',
'zxc',
],
[
'qwe',
'rty',
'zxc',
],
'iop',
]
更改键的大小写
use DragonCode\Contracts\Pretty\Arr\Caseable; use DragonCode\PrettyArray\Services\Formatter; $service = Formatter::make(); $service->setCase(Caseable::PASCAL_CASE); return $service->raw($array);
结果
[
'Foo' => 1,
'Bar' => 2,
'Baz' => 3,
'QweRty' => 'qaz',
'Baq' => [
0 => 'qwe',
1 => 'rty',
'Asd' => 'zxc',
],
'AsdFgh' => [
'FooBarBaz' => 'qwe',
2 => 'rty',
'QawSed' => 'zxc',
],
2 => 'iop',
]
以下选项可用
- camelCase (
DragonCode\Contracts\Pretty\Arr\Caseable::CAMEL_CASE
); - kebab-case (
DragonCode\Contracts\Pretty\Arr\Caseable::KEBAB_CASE
); - PascalCase (
DragonCode\Contracts\Pretty\Arr\Caseable::PASCAL_CASE
); - snake_case (
DragonCode\Contracts\Pretty\Arr\Caseable::SNAKE_CASE
); - 无案例(
DragonCode\Contracts\Pretty\Arr\Caseable::NO_CASE
)。默认情况下;
NO_CASE
表示将不会执行键注册处理。
存储文件
use DragonCode\PrettyArray\Services\File; use DragonCode\PrettyArray\Services\Formatter; $service = Formatter::make(); $formatted = $service->raw($array); File::make($formatted) ->store('foo.php');
存储结果为文件foo.php
<?php return [ 'foo' => 1, 'bar' => 2, 'baz' => 3, 'qwerty' => 'qaz', 'baq' => [ 0 => 'qwe', 1 => 'rty', 'asd' => 'zxc', ], 'asdfgh' => [ 'foobarbaz' => 'qwe', 2 => 'rty', 'qawsed' => 'zxc', ], 2 => 'iop', ];
作为JSON
use DragonCode\PrettyArray\Services\File; use DragonCode\PrettyArray\Services\Formatter; $service = Formatter::make(); $service->asJson(); $formatted = $service->raw($array); File::make($formatted) ->store('foo.json');
存储结果为文件foo.json
{ "foo": 1, "bar": 2, "baz": 3, "qwerty": "qaz", "baq": { "0": "qwe", "1": "rty", "asd": "zxc" }, "asdfgh": { "foobarbaz": "qwe", "2": "rty", "qawsed": "zxc" }, "2": "'iop'" }
许可证
此软件包根据MIT许可证授权。