Jelle-S/TheSportsDb

View on GitHub
src/PropertyMapper/Transformer/Callback.php

Summary

Maintainability
A
0 mins
Test Coverage
<?php
/**
 * @file
 * Contains TheSportsDb\PropertyMapper\Transformer\Callback.
 */
namespace TheSportsDb\PropertyMapper\Transformer;

use FastNorth\PropertyMapper\Transformer\TransformerInterface;

/**
 * Callback transformer
 *
 * @author Jelle Sebreghts
 */
class Callback implements TransformerInterface
{
    /**
     * Transforming method.
     *
     * @param callable
     */
    private $transform;

    /**
     * Reversing method.
     *
     * @param callable
     */
    private $reverse;

    /**
     * Constructor.
     *
     * @param callable $transform
     * @param callable $reverse
     */
    public function __construct(callable $transform, callable $reverse)
    {
        $this->transform = $transform;
        $this->reverse   = $reverse;
    }

    /**
     * {@inheritdoc}
     */
    public function transform($value, $context)
    {
        return call_user_func_array($this->transform, [$value, $context]);
    }

    /**
     * {@inheritdoc}
     */
    public function reverse($value, $context)
    {
        return call_user_func_array($this->reverse, [$value, $context]);
    }
}