flamecore/synchronizer

Synchronize all kinds of things

v0.1.0 2015-07-20 14:19 UTC

This package is auto-updated.

Last update: 2024-03-13 07:10:38 UTC


README

Latest Stable Scrutinizer License

This library makes it easy to synchronize all kinds of things. It features a beautiful and easy to use API.

Synchronizer was developed as backend for our deployment and testing tool Seabreeze.

Implementations

The Synchronizer library is just an abstract foundation. But concrete implementations are available:

Usage

Include the vendor autoloader and use the classes:

namespace Acme\MyApplication;

// To create a Synchronizer:
use FlameCore\Synchronizer\AbstractSynchronizer;
use FlameCore\Synchronizer\SynchronizerSourceInterface;
use FlameCore\Synchronizer\SynchronizerTargetInterface;

// To make your project compatible with Synchronizer:
use FlameCore\Synchronizer\SynchronizerInterface;

require 'vendor/autoload.php';

Create your Synchronizer:

class ExampleSynchronizer extends AbstractSynchronizer
{
    /**
     * @param bool $preserve Preserve obsolete objects
     * @return bool Returns whether the synchronization succeeded.
     */
    public function synchronize($preserve = true)
    {
        // Do the sync magic

        return true;
    }

    /**
     * @param SynchronizerSourceInterface $source The source
     * @return bool Returns whether the synchronizer supports the source.
     */
    public function supportsSource(SynchronizerSourceInterface $source)
    {
        return $source instanceof ExampleSource;
    }

    /**
     * @param SynchronizerTargetInterface $target The target
     * @return bool Returns whether the synchronizer supports the target.
     */
    public function supportsTarget(SynchronizerTargetInterface $target)
    {
        return $target instanceof ExampleTarget;
    }
}

Create your Source and Target:

class ExampleSource implements SynchronizerSourceInterface
{
    /**
     * @param array $settings The settings
     */
    public function __construct(array $settings)
    {
        // Save settings
    }

    // Your methods...
}

class ExampleTarget implements SynchronizerTargetInterface
{
    /**
     * @param array $settings The settings
     */
    public function __construct(array $settings)
    {
        // Save settings
    }

    // Your methods...
}

Make your project compatible with Synchronizer:

class Application
{
    protected $synchronizer;

    public function setSynchronizer(SynchronizerInterface $synchronizer)
    {
        $this->synchronizer = $synchronizer;
    }

    // ...
}

Installation

Install via Composer

Install Composer if you don't already have it present on your system:

$ curl -sS https://getcomposer.org/installer | php

To install the library, run the following command and you will get the latest version:

$ php composer.phar require flamecore/synchronizer

Requirements

  • You must have at least PHP version 5.4 installed on your system.

Contributing

If you'd like to contribute, please see the CONTRIBUTING file first.