cashcarryshop/synchronizer

Synchronize all kinds of things

1.1.0 2024-06-12 19:17 UTC

This package is not auto-updated.

Last update: 2024-09-18 20:44:38 UTC


README

Latest Stable Scrutinizer License

Эта библиотека позволяет легко синхронизировать самые разные вещи. Он имеет красивый и простой в использовании API.

Реализация

Библиотека Synchronizer - это всего лишь абстрактная основа. Но доступные конкретные реализации: (только для версии 0.1.0)

Использование

Подключите к своему коду autoload.php и используйте классы:

namespace Acme\MyApplication;

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

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

require 'vendor/autoload.php';

Создайте свой синхронизатор:

class ExampleSynchronizer extends AbstractSynchronizer
{
    /**
     * Синхронизировать
     *
     * @param array $settings Настройки для синхронизации
     *
     * @return bool
     */
    public function synchronize(array $settings = []): bool
    {
        /// ... ЛОГИКА ...

        return true;
    }

    /**
     * Проверить, поддерживается ли источник
     *
     * @param SynchronizerSourceInterface $source Источник
     *
     * @return bool
     */
    public function supportsSource(SynchronizerSourceInterface $source): bool
    {
        return $source instanceof ExampleSource;
    }

    /**
     * Проверить, поддерживается ли цель
     *
     * @param SynchronizerTargetInterface $target Цель
     *
     * @return bool
     */
    public function supportsTarget(SynchronizerTargetInterface $target): bool
    {
        return $target instanceof ExampleTarget;
    }
}

Создайте источники и цели синхронизатора:

class ExampleSource implements SynchronizerSourceInterface
{
    /**
     * Создать экземпляр источника
     *
     * @param array $settings Настройки
     */
    public function __construct(array $settings)
    {
        // ... Сохраняем настройки ...
    }

    // .. Методы источника ...
}

class ExampleTarget implements SynchronizerTargetInterface
{
    /**
     * Создать экземпляр цели
     *
     * @param array $settings Настройки
     */
    public function __construct(array $settings)
    {
        // ... Сохраняем настройки ...
    }

    // .. Методы цели ...
}

Создайте свой проект, совместимый с синхронизатором:

class Application
{
    /**
     * Синхронизатор
     *
     * @var SynchronizerInterface
     */
    protected SynchronizerInterface $synchronizer;

    /**
     * Установить синхронизатор
     *
     * @param SynchronizerInterface $synchronizer Синхронизатор
     */
    public function setSynchronizer(SynchronizerInterface $synchronizer): static
    {
        $this->synchronizer = $synchronizer;
    }

    // ...
}

Установка

Через Composer

Install Composer если composer не установлен:

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

Установите библиотеку, эта команда установит самую последнюю версию пакета

$ composer require whatis/synchronizer

Требования

  • Ваша версия php должна быть не меньше 8.0

Участие

Если хотите поучавствовать в разработке, пожалуйста, сначала прочитайте CONTRIBUTING.