*/ private $dates; /** * @var PaginationInterface */ private $pagination; /** * @var array */ private $variables = []; public function __construct( array $search, DateDemand $demand, QueryResult $dates, PaginationInterface $pagination ) { $this->search = $search; $this->demand = $demand; $this->dates = $dates; $this->pagination = $pagination; } public function getSearch(): array { return $this->search; } public function getDemand(): DateDemand { return $this->demand; } /** * @return QueryResult */ public function getDates(): QueryResult { return $this->dates; } /** * @param mixed $value */ public function addVariable(string $key, $value): void { $this->variables[$key] = $value; } public function getVariablesForView(): array { return array_merge([ 'search' => $this->search, 'demand' => $this->demand, 'dates' => $this->dates, 'pagination' => $this->pagination, ], $this->variables); } }