<?php
namespace Jaxon\Utils\View;
use Jaxon\Contracts\View as ViewContract;
use JsonSerializable;
class Store
{
/**
* The view renderer
*
* @var ViewContract
*/
protected $xRenderer;
/**
* The view namespace
*
* @var string
*/
protected $sNamespace;
/**
* The view name
*
* @var string
*/
protected $sViewName;
/**
* The view data
*
* @var array
*/
protected $aViewData = [];
/**
* Make a piece of data available for the rendered view
*
* @param string $name The data name
* @param string $value The data value
*
* @return Store
*/
public function with($name, $value)
{
$this->aViewData[$name] = $value;
return $this;
}
/**
* Set the data to be rendered
*
* @param array $aViewData The view data
*
* @return void
*/
public function setData(array $aViewData)
{
$this->aViewData = array_merge($this->aViewData, $aViewData);
return $this;
}
/**
* Set the view to be rendered, with optional data
*
* @param ViewContract $xRenderer The view renderer
* @param string $sNamespace The view namespace
* @param string $sViewName The view name
* @param array $aViewData The view data
*
* @return void
*/
public function setView(ViewContract $xRenderer, $sNamespace, $sViewName, array $aViewData = [])
{
$this->xRenderer = $xRenderer;
$this->sNamespace = trim($sNamespace);
$this->sViewName = trim($sViewName);
$this->aViewData = array_merge($this->aViewData, $aViewData);
}
/**
* Get the view namespace
*
* @return string The view namespace
*/
public function getNamespace()
{
return $this->sNamespace;
}
/**
* Get the view name
*
* @return string The view name
*/
public function getViewName()
{
return $this->sViewName;
}
/**
* Get the view data
*
* @return array The view data
*/
public function getViewData()
{
return $this->aViewData;
}
/**
* Render a view using third party view system
*
* @return string The string representation of the view
*/
public function __toString()
{
return ($this->xRenderer) ? $this->xRenderer->render($this) : '';
}
/**
* Convert this object to string for json.
*
* This is a method of the JsonSerializable interface.
*
* @return string
*/
public function jsonSerialize()
{
return $this->__toString();
}
}
|