dev-master
9999999-devMerger with rules
MIT
The Development Requires
php merger
Wallogit.com
2017 © Pedro Peláez
Merger with rules
This project is part of francetv zoom open source projects (iOS, Android and Angular)., (*1)
This component allows you to merge multiple data sources in a single array and based on business rules., (*2)
In composer.json, (*3)
"repositories": [
{
"type": "vcs",
"url": "git@github.com:francetv/merger.git"
}
]
And run composer, (*4)
composer require ftv/merger
Create rule class that implement RuleInterface, (*5)
<?php
namespace App\Merger\Rules
use Ftv\Merger\Rule\RuleInterface;
class MyBusinessRule implement RuleInterface
{
public function apply($merged, $firstSource, $secondSource)
{
if (!isset($secondSource['specific-key'])) {
return $merged;
}
if ($secondSource['specific-key'] === "some specific value") {
$merged['specific-key'] = "override value because business is business";
}
return $merged
}
}
Then, create an instance of Merger and add this rule, (*6)
//somewhere in your application $merger = new Merger(); $merger->addRule(new MyBusinessRule());
And use it., (*7)
//somewhere further in your application $merged = $merger->merge($merged, $dataSource1, $dataSource2);
$merged must contain all your data merged with rules applied. If no rule is added, it merge all data source into merged array., (*8)
Declare rule as service, (*9)
<service id="app.merger.rules.my_business" class="App\Merger\Rule\MyBusinessRule" />
Declare merger as service and add rule., (*10)
<service id="app.merger" class="Ftv\Merger\Merger">
<call method="addRule">
<argument type="service" id="app.merger.rules.my_business" />
</call>
</service>
In your app, call merger service, (*11)
//somewhere in your application
$merged = $this->container->get('app.merger')->merge($merged, $dataSource1, $dataSource2);
That's it!, (*12)
Merger with rules
MIT
php merger