<?php
/*
* This file is part of Sulu.
*
* (c) Sulu GmbH
*
* This source file is subject to the MIT license that is bundled
* with this source code in the file LICENSE.
*/
namespace Sulu\Component\SmartContent;
use JMS\Serializer\Annotation\ExclusionPolicy;
use JMS\Serializer\Annotation\VirtualProperty;
use Sulu\Component\SmartContent\Exception\NoSuchPropertyException;
use Sulu\Component\SmartContent\Exception\NotSupportedException;
/**
* Base class for DataProvider items.
*
* @ExclusionPolicy("all")
*/
class ArrayAccessItem implements ResourceItemInterface, \ArrayAccess, \JsonSerializable
{
/**
* @var string
*/
private $id;
/**
* @var array
*/
private $data = [];
/**
* @var object
*/
private $resource;
/**
* @param object $resource
*/
public function __construct($id, array $data, $resource)
{
$this->id = $id;
$this->data = $data;
$this->resource = $resource;
}
public function getResource()
{
return $this->resource;
}
/**
* @VirtualProperty()
*/
public function getId()
{
return $this->id;
}
/**
* Returns TRUE if data array contains given key.
*
* @param string $key
*
* @return bool
*/
protected function exists($key)
{
return \array_key_exists($key, $this->data);
}
/**
* Returns value with given key.
*
* @param string $key
*
* @throws NoSuchPropertyException
*/
protected function get($key)
{
if (!$this->exists($key)) {
throw new NoSuchPropertyException();
}
return $this->data[$key];
}
public function __get($name)
{
return $this->get($name);
}
#[\ReturnTypeWillChange]
public function offsetExists($offset)
{
return $this->exists($offset);
}
public function offsetGet($offset)
{
return $this->get($offset);
}
#[\ReturnTypeWillChange]
public function offsetSet($offset, $value)
{
throw new NotSupportedException();
}
#[\ReturnTypeWillChange]
public function offsetUnset($offset)
{
throw new NotSupportedException();
}
#[\ReturnTypeWillChange]
public function jsonSerialize()
{
return $this->data;
}
}