open-orchestra/open-orchestra-base-api-bundle

View on GitHub
BaseApi/Transformer/AbstractTransformer.php

Summary

Maintainability
A
0 mins
Test Coverage
<?php

namespace OpenOrchestra\BaseApi\Transformer;

use OpenOrchestra\BaseApi\Exceptions\TransformerParameterTypeException;
use OpenOrchestra\BaseApi\Exceptions\HttpException\FacadeClassNotSetException;
use OpenOrchestra\BaseApi\Facade\FacadeInterface;
use Symfony\Component\Routing\Generator\UrlGenerator;
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;

/**
 * Class AbstractTransformer
 */
abstract class AbstractTransformer implements TransformerInterface
{
    protected $facadeClass;
    
    /**
     * @var TransformerManager
     */
    protected $context;
    protected $arrayCache;

    /**
     * @param string $facadeClass
     */
    public function __construct(
        $facadeClass = null
    ) {
        $this->facadeClass = $facadeClass;
    }

    /**
     * @param TransformerManager $manager
     */
    public function setContext(TransformerManager $manager)
    {
        $this->context = $manager;
    }

    /**
     * @param string $name
     *
     * @return TransformerInterface
     */
    protected function getTransformer($name)
    {
        return $this->context->get($name);
    }

    /**
     * @return TransformerManager $manager
     */
    protected function getContext()
    {
        return $this->context;
    }

    /**
     * @return UrlGenerator
     */
    protected function getRouter()
    {
        return $this->context->getRouter();
    }

    /**
     * @param string         $name
     * @param array          $parameter
     * @param boolean|string $referenceType
     *
     * @return string
     */
    protected function generateRoute($name, $parameter = array(), $referenceType = UrlGeneratorInterface::ABSOLUTE_URL)
    {
        return $this->getRouter()->generate($name, $parameter, $referenceType);
    }

    /**
     * @param string $group
     *
     * @return bool
     */
    protected function hasGroup($group)
    {
        return $this->context->getGroupContext()->hasGroup($group);
    }

    /**
     * @param mixed $mixed
     * @param array $params
     *
     * @return FacadeInterface
     */
    public function transform($mixed, array $params = array())
    {
    }

    /**
     * @param FacadeInterface $facade
     * @param array           $params
     *
     * @return mixed
     */
    public function reverseTransform(FacadeInterface $facade, array $params = array())
    {
    }

    /**
     * @return bool
     */
    public function isCached(){
        return false;
    }

    /**
     * @return mixed
     *
     * @throws FacadeClassNotSetException
     * @throws TransformerParameterTypeException
     */
    protected function newFacade()
    {
        if (null === $this->facadeClass) {
            throw new FacadeClassNotSetException();
        }

        $facade = new $this->facadeClass();

        if (!$facade instanceof FacadeInterface) {
            throw new TransformerParameterTypeException();
        }

        return $facade;
    }
}