exorg / data-coder
可扩展的通用数据和数据文件解码器/编码器。
Requires
- php: 8.1 - 8.3
- garoevans/php-enum: ^1.2
- symfony/yaml: ^6.3
Requires (Dev)
- phpunit/phpunit: ^10.4
- squizlabs/php_codesniffer: ^3.7
This package is not auto-updated.
Last update: 2024-09-21 19:30:09 UTC
README
可扩展的数据和文件编码解码器集。它允许将PHP数组转换为数据字符串和数据文件,反之亦然,可以选择如YAML和JSON等格式。它提供了各种解码和编码机制的封装,统一了接口和异常处理。
存在各种解码器和编码器组
- 具有预定义的数据格式 - 例如 Coder\Json\Data\Decoder,Coder\Yaml\Datafile\Encoder
- 具有可配置的数据格式 - 例如 Coder\Data\Decoder,Coder\Datafile\Encoder
- 用于原始数据 - 例如 Coder\Json\Data\Decoder,Coder\Data\Encoder
- 用于文件中的数据 - 例如 Coder\Yaml\Datafile\Encoder,Coder\Datafile\Decoder
入门指南
先决条件
说明假设使用Linux操作系统或兼容其他操作系统的工具。
安装
需要php8.*-cli,Git和Composer
将DataCoder安装到项目源代码中,推荐的方式是将它作为代码依赖通过Composer处理。需要Git从版本控制仓库中获取包。
需要php8.*-cli来安装Composer。
DataCoder安装
通过运行以下命令在您的composer.json文件中添加适当的条目
composer require exorg/data-coder
如果处于项目设置阶段且尚未安装任何依赖项,请运行
composer install
如果之前已安装了其他依赖项,请运行
composer update
用法
在可执行文件中自动加载所有必需文件的最简单方法是附加由Composer生成的autoload.php文件(在运行composer install
或composer update
命令后),如下面的示例所示
require_once (__DIR__ . '/vendor/autoload.php');
具有预定义格式的数据编码器
use ExOrg\DataCoder\Coder\Json\Data\Encoder; $data = [ "firstName" => "John", "lastName" => "Smith", "address" => [ "streetAddress" => "21 2nd Street", "city" => "New York", "state" => "NY", "postalCode" => "10021-3100", ], ]; $encoder = new Encoder(); $result = $encoder->encodeData($data); print($result);
{
"firstName": "John",
"lastName": "Smith",
"address": {
"streetAddress": "21 2nd Street",
"city": "New York",
"state": "NY",
"postalCode": "10021-3100"
}
}
具有预定义格式的数据解码器
use ExOrg\DataCoder\Coder\Yaml\Data\Decoder; $data = ' firstName: John lastName: Smith address: streetAddress: 21 2nd Street city: New York state: NY postalCode: 10021-3100 '; $decoder = new Decoder(); $result = $decoder->decodeData($data); print_r($result);
Array
(
[firstName] => John
[lastName] => Smith
[address] => Array
(
[streetAddress] => 21 2nd Street
[city] => New York
[state] => NY
[postalCode] => 10021-3100
)
)
具有可配置格式的数据编码器
use ExOrg\DataCoder\Coder\Data\Encoder; $data = [ "firstName" => "John", "lastName" => "Smith", "address" => [ "streetAddress" => "21 2nd Street", "city" => "New York", "state" => "NY", "postalCode" => "10021-3100", ], ]; $encoder = new Encoder(); $encoder->setDataFormat('yaml'); $result = $encoder->encodeData($data); print($result);
firstName: John
lastName: Smith
address:
streetAddress: '21 2nd Street'
city: 'New York'
state: NY
postalCode: 10021-3100
具有可配置格式的数据解码器
use ExOrg\DataCoder\Coder\Data\Decoder; $data = ' { "firstName": "John", "lastName": "Smith", "isAlive": true, "address": { "streetAddress": "21 2nd Street", "city": "New York", "state": "NY", "postalCode": "10021-3100" } } '; $decoder = new Decoder(); $decoder->setDataFormat('json'); $result = $decoder->decodeData($data); print_r($result);
Array
(
[firstName] => John
[lastName] => Smith
[isAlive] => 1
[address] => Array
(
[streetAddress] => 21 2nd Street
[city] => New York
[state] => NY
[postalCode] => 10021-3100
)
)
数据文件编码器和解码器
数据文件编码器和解码器的用法与数据编码器和解码器类似。存在具有预定义数据格式(如 Coder\Json\Datafile\Encoder 或 Coder\Yaml\Datafile\Decoder)的编码器,以及可以通过函数 setDataFormat 选择数据格式的编码器,就像上面的示例一样 - Code\Datafile\Encoder 和 Code\Datafile\Decoder。
通过文件扩展名识别数据格式
具有可配置数据格式的数据文件编码器 - Coder\Datafile\Encoder 和 Coder\Datafile\Decoder - 可以通过文件扩展名识别数据格式。在这种情况下,无需手动设置数据格式。
数据文件编码器
use ExOrg\DataCoder\Coder\Datafile\Encoder; $data = [ "firstName" => "John", "lastName" => "Smith", "address" => [ "streetAddress" => "21 2nd Street", "city" => "New York", "state" => "NY", "postalCode" => "10021-3100", ], ]; $datafilePath = 'data.json'; $encoder = new Encoder(); $encoder->encodeFile($data, $datafilePath); print file_get_contents($datafilePath);
{
"firstName": "John",
"lastName": "Smith",
"address": {
"streetAddress": "21 2nd Street",
"city": "New York",
"state": "NY",
"postalCode": "10021-3100"
}
}
数据文件解码器
use ExOrg\DataCoder\Coder\Datafile\Decoder; $datafilePath = 'data.yaml'; print file_get_contents($datafilePath); $decoder = new Decoder(); $data = $decoder->decodeFile($datafilePath); print_r($data);
firstName: John
lastName: Smith
address:
streetAddress: '21 2nd Street'
city: 'New York'
state: NY
postalCode: 10021-3100
Array
(
[firstName] => John
[lastName] => Smith
[address] => Array
(
[streetAddress] => 21 2nd Street
[city] => New York
[state] => NY
[postalCode] => 10021-3100
)
)
测试
单元测试
该项目具有单元测试,它使用PHPUnit框架构建,并在Linux操作系统上运行。
要运行测试,在主DataCoder项目目录中写入以下命令行
vendor/bin/phpunit tests/
或使用Composer脚本
composer test
代码风格测试
要运行代码风格测试,在主DataCoder项目目录中写入以下命令行
vendor/bin/phpcs tests/ src/
或使用Composer脚本
composer sniff
您也可以使用Composer脚本来同时运行测试并检查代码风格
composer check
构建于
版本控制
本项目根据 SemVer 版本控制标准进行版本控制。所有可用的 发布版本 都 标记。
贡献
请阅读 CONTRIBUTING.md 以获取行为准则和提交拉取请求的详细过程。
作者
- 卡塔琳娜·克拉辛斯卡 - katheroine, ExOrg
许可证
本项目采用MIT许可证 - 有关详细信息,请参阅 LICENSE.md 文件。