jackal / copycat
库,用于将 `事物` 从一种格式复制到另一种格式
v0.2.13
2020-08-20 10:44 UTC
Requires
- php: >=5.6
- ext-json: *
- ext-pdo: *
- symfony/options-resolver: >=3.4
Requires (Dev)
- brainmaestro/composer-git-hooks: ^2.8
- friendsofphp/php-cs-fixer: ^2.16
- phpunit/phpunit: ^5.7
README
简单的PHP代码,用于从一个源“复制”数据到另一个源
要求
PHP >= 5.6
入门
使用composer安装库
composer require jackal/copycat
用法
基本示例:从数组到SQL插入语句
require_once __DIR__.'/vendor/autoload.php';
$reader = new \Jackal\Copycat\Reader\ArrayReader([
['col1' => 'value1','col2' => 'value2'],
['col1' => 'value3','col2' => 'value4'],
/*...*/
]);
$workflow = new \Jackal\Copycat\Workflow($reader);
$workflow->addWriter(new \Jackal\Copycat\Writer\SQLFileWriter('test_table','test_table.sql'));
$workflow->process();
echo file_get_contents(__DIR__.'/test_table.sql');
从数组到数组
$reader = new \Jackal\Copycat\Reader\ArrayReader([
['value1'],
['value2'],
/*...*/
]);
$workflow = new \Jackal\Copycat\Workflow($reader);
$workflow->addWriter(new \Jackal\Copycat\Writer\ArrayWriter($outputArray));
$workflow->process();
var_dump($outputArray);
过滤器
使用过滤器,您可以应用逻辑以排除输出中的某些值。
/*[...]*/
/*Define wich column to apply filter*/
$workflow->addFilter(new NotBlankFilter('col1'));
/*[...]*/
过滤器是可调用的对象,您可以定义自己的过滤器
/*[...]*/
/*Define custom filter*/
$workflow->addFilter(function($values){
return $values['col1'] > 0;
});
/*[...]*/
转换器
使用转换器,您可以修改输出值。
/*[...]*/
/*Define custom filter*/
$workflow->addConverter(new DatetimeToStringConverter('col1'));
/*[...]*/
您可以设置自己的转换器
/*[...]*/
//apply custom converter
$workflow->addConverter(function ($values){
foreach ($values as &$value) {
if ($value == 'to convert') {
$value = 'converted';
}
}
return $values;
});
/*[...]*/
排序
是否可以排序输出值
/*[...]*/
//add sorter
$workflow->addSorter(new AscendingSorter('col1'));
/*[...]*/
如果您想根据多个列排序值,只需添加多个参数。 小心使用!此方法可能在大量输入数据上创建性能问题
/*[...]*/
//add sorter
$workflow->addSorter(new AscendingSorter('col1','col2','col3',/*...*/));
/*[...]*/
作者
- Luca Giacalone(别名JackalOne)
许可
本项目采用MIT许可证