2017 © Pedro Peláez
 

library merger

Merger with rules

image

ftv/merger

Merger with rules

  • Tuesday, May 10, 2016
  • by lepiaf
  • Repository
  • 12 Watchers
  • 0 Stars
  • 0 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 1 Versions
  • 0 % Grown

The README.md

Ftv Merger

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)

How to install

In composer.json, (*3)

"repositories": [
    {
        "type": "vcs",
        "url": "git@github.com:francetv/merger.git"
    }
]

And run composer, (*4)

composer require ftv/merger

How to use

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)

How to use with Symfony

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)

The Versions

10/05 2016

dev-master

9999999-dev

Merger with rules

  Sources   Download

MIT

The Development Requires

php merger