<?php
declare(strict_types=1);
namespace App\CoreBundle\Component\Grid;
use App\CoreBundle\Component\Router\Security\RouteCsrfProtector;
use Symfony\Component\HttpFoundation\RequestStack;
use Symfony\Component\Routing\RouterInterface;
use Twig_Environment;
class GridFactory
{
/**
* @var \Symfony\Component\HttpFoundation\RequestStack
*/
protected $requestStack;
/**
* @var \Symfony\Component\Routing\RouterInterface
*/
protected $router;
/**
* @var \App\CoreBundle\Component\Router\Security\RouteCsrfProtector
*/
protected $routeCsrfProtector;
/**
* @var \Twig_Environment
*/
protected $twig;
/**
* @param \Symfony\Component\HttpFoundation\RequestStack $requestStack
* @param \Symfony\Component\Routing\RouterInterface $router
* @param \App\CoreBundle\Component\Router\Security\RouteCsrfProtector $routeCsrfProtector
* @param \Twig_Environment $twig
*/
public function __construct(
RequestStack $requestStack,
RouterInterface $router,
RouteCsrfProtector $routeCsrfProtector,
Twig_Environment $twig
) {
$this->requestStack = $requestStack;
$this->router = $router;
$this->routeCsrfProtector = $routeCsrfProtector;
$this->twig = $twig;
}
/**
* @param string $gridId
* @param \App\CoreBundle\Component\Grid\DataSourceInterface $dataSource
* @throws \App\CoreBundle\Component\Grid\Exception\EmptyGridIdException
* @return \App\CoreBundle\Component\Grid\Grid
*/
public function create($gridId, DataSourceInterface $dataSource)
{
return new Grid(
$gridId,
$dataSource,
$this->requestStack,
$this->router,
$this->routeCsrfProtector,
$this->twig
);
}
}