<?php
/**
* Pimcore
*
* This source file is available under two different licenses:
* - GNU General Public License version 3 (GPLv3)
* - Pimcore Enterprise License (PEL)
* Full copyright and license information is available in
* LICENSE.md which is distributed with this source code.
*
* @copyright Copyright (c) Pimcore GmbH (http://www.pimcore.org)
* @license http://www.pimcore.org/license GPLv3 and PEL
*/
namespace Pimcore\Templating\Model;
use Symfony\Component\HttpFoundation\ParameterBag;
class ViewModel implements ViewModelInterface
{
/**
* @var ParameterBag
*/
protected $parameters;
/**
* @param array $parameters
*/
public function __construct(array $parameters = [])
{
$this->initialize($parameters);
}
/**
* @param array $parameters
*
* @return $this
*/
public function initialize(array $parameters = [])
{
$this->parameters = new ParameterBag($parameters);
return $this;
}
/**
* @return ParameterBag
*/
public function getParameters()
{
return $this->parameters;
}
/**
* @return array
*/
public function getAllParameters()
{
return $this->parameters->all();
}
/**
* @inheritDoc
*/
public function get($key, $default = null)
{
return $this->getParameters()->get($key, $default);
}
/**
* @inheritDoc
*/
public function has($key)
{
return $this->parameters->has($key);
}
/**
* @param string $name
*
* @return mixed
*/
public function __get($name)
{
return $this->parameters->get($name, null);
}
/**
* @param string $name
* @param mixed $value
*/
public function __set($name, $value)
{
$this->parameters->set($name, $value);
}
/**
* @param string $name
*
* @return bool
*/
public function __isset($name)
{
return $this->parameters->has($name);
}
/**
* @return \ArrayIterator
*/
public function getIterator()
{
return $this->parameters->getIterator();
}
/**
* @return int
*/
public function count()
{
return $this->parameters->count();
}
/**
* @param mixed $offset
*
* @return bool
*/
public function offsetExists($offset)
{
return $this->parameters->has($offset);
}
/**
* @param mixed $offset
*
* @return mixed
*/
public function offsetGet($offset)
{
return $this->parameters->get($offset);
}
/**
* @param mixed $offset
* @param mixed $value
*/
public function offsetSet($offset, $value)
{
$this->parameters->set($offset, $value);
}
/**
* @param mixed $offset
*/
public function offsetUnset($offset)
{
$this->parameters->remove($offset);
}
/**
* @inheritDoc
*/
public function jsonSerialize()
{
return $this->parameters->all();
}
}