Files
awo-hamburg-intranet/mysyde/common/classes/ViewFactory.php
2026-02-17 14:56:23 +01:00

73 lines
2.2 KiB
PHP

<?php
namespace DynCom\mysyde\common\classes;
use DynCom\mysyde\common\interfaces\DOMTemplate;
use DynCom\mysyde\common\interfaces\PHTMLTemplate;
use DynCom\mysyde\common\interfaces\PlainTemplate;
use DynCom\mysyde\common\interfaces\Template;
use DynCom\mysyde\common\interfaces\ViewModel;
/**
* Created by PhpStorm.
* User: Michael Bauer
* Date: 7/14/2015
* Time: 2:43 AM
*/
class ViewFactory
{
protected $transformer;
/**
* @param RenderableStringTransformer $transformer
*/
public function __construct(RenderableStringTransformer $transformer) {
$this->transformer = $transformer;
}
/**
* @param Template $template
* @param ViewModel $viewModel
* @return GenericDOMView|GenericPHTMLView|GenericPlainView
* @throws \InvalidArgumentException
*/
public function getView(Template $template, ViewModel $viewModel) {
if($template instanceof PHTMLTemplate) {
return $this->getPHTMLView($template,$viewModel);
} elseif($template instanceof PlainTemplate) {
return $this->getPlainView($template,$viewModel);
} elseif($template instanceof DOMTemplate) {
return $this->getDOMView($template,$viewModel);
}
throw new \InvalidArgumentException(
"Temlate must be either PHTMLTemplate, PlainTemplate or DOMTemplate"
);
}
/**
* @param DOMTemplate $template
* @param ViewModel $viewModel
* @return GenericDOMView
*/
protected function getDOMView(DOMTemplate $template, ViewModel $viewModel) {
return new GenericDOMView($template,$viewModel,$this->transformer);
}
/**
* @param PlainTemplate $template
* @param ViewModel $viewModel
* @return GenericPlainView
*/
protected function getPlainView(PlainTemplate $template, ViewModel $viewModel) {
return new GenericPlainView($template,$viewModel,$this->transformer);
}
/**
* @param PHTMLTemplate $template
* @param ViewModel $viewModel
* @return GenericPHTMLView
*/
protected function getPHTMLView(PHTMLTemplate $template, ViewModel $viewModel) {
return new GenericPHTMLView($template,$viewModel);
}
}