gong023 / ayaml
将yaml转换为数组的实用工具
0.5.2
2023-08-23 01:04 UTC
Requires
- php: >=5.5
- gong023/retry: ^0.2.1
- nesbot/carbon: ^2.57
- symfony/yaml: ^5.3.6
Requires (Dev)
- friendsofphp/php-cs-fixer: 3.*
- mockery/mockery: 0.9.*
- php-coveralls/php-coveralls: ^2.4.3
README
从Yaml创建数组的实用工具。
设置
安装Ayaml
composer require --dev gong023/ayaml:0.2.*
在测试bootstrap.php中注册yaml目录
\Ayaml\Ayaml::registerBasePath('/Dir/YamlFile/Exists');
用法
基本
以下是一个示例yaml文件。
# /Dir/YamlFile/Exists/User.yaml valid_user: id: 1 name: Taro created: 2014-01 valid_user_collection: user1: id: 1 name: Taro created: 2014-01 user2: id: 2 name: Jiro created: 2014-01
您可以从上面的yaml文件创建数组。
// plain pattern Ayaml::file('user')->schema('valid_user')->dump(); => ['id' => 1, 'name' => 'Taro', 'created' => '2014-01']; // with overwriting Ayaml::file('user')->schema('valid_user')->with(['id' => 2, 'name' => 'John'])->dump(); => ['id' => 2, 'name' => 'John', 'created' => '2014-01']; // you can get data from nested yaml Ayaml::file('user')->schema('valid_user_collection.user2')->dump(); => ['id' => 2, 'name' => 'Jiro', 'created' => '2014-01'];
创建顺序数据
您可以从yaml数据类型创建顺序数据。
$validUser = Ayaml::file('user')->schema('valid_user'); // make incremental id sequence. Ayaml::seq($validUser)->range('id', 10, 12)->byOne()->dump(); => [ ['id' => 10, 'name' => 'Taro', 'created' => '2014-01'], ['id' => 11, 'name' => 'Taro', 'created' => '2014-01'], ['id' => 12, 'name' => 'Taro', 'created' => '2014-01'], ]; // make decremental id sequence. Ayaml::seq($validUser)->range('id', 10, 8)->byOne()->dump(); => [ ['id' => 10, 'name' => 'Taro', 'created' => '2014-01'], ['id' => 9, 'name' => 'Taro', 'created' => '2014-01'], ['id' => 8, 'name' => 'Taro', 'created' => '2014-01'], ] // you can specify logic. Ayaml::seq($validUser)->range('id', 10, 12)->by(function($id) { return $id + 2; })->dump(); => [ ['id' => 10, 'name' => 'Taro', 'created' => '2014-01'], ['id' => 12, 'name' => 'Taro', 'created' => '2014-01'], ]; // make incremental date sequence. // you can specify duration 'byDay','byWeek','byMonth','byYear' Ayaml::seq($validUser)->between('created', '2014-01', '2014-03')->byMonth()->dump(); => [ ['id' => 1, 'name' => 'Taro', 'created' => '2014-01'], ['id' => 1, 'name' => 'Taro', 'created' => '2014-02'], ['id' => 1, 'name' => 'Taro', 'created' => '2014-03'], ]; // make decremental date sequence. Ayaml::seq($validUser)->between('created', '2014-03', '2014-01')->byMonth()->dump(); => [ ['id' => 1, 'name' => 'Taro', 'created' => '2014-03'], ['id' => 1, 'name' => 'Taro', 'created' => '2014-02'], ['id' => 1, 'name' => 'Taro', 'created' => '2014-01'], ]; // make numeric and date column sequential. Ayaml::seq($validUser) ->range('id', 10, 12)->byOne() ->between('created', '2014-01', '2014-03')->byMonth() ->dump(); => [ ['id' => 10, 'name' => 'Taro', 'created' => '2014-01'], ['id' => 11, 'name' => 'Taro', 'created' => '2014-02'], ['id' => 12, 'name' => 'Taro', 'created' => '2014-03'], ];