diff options
author | Thomas Lange <code@nerdmind.de> | 2017-02-24 21:27:59 +0100 |
---|---|---|
committer | Thomas Lange <code@nerdmind.de> | 2017-02-24 21:27:59 +0100 |
commit | 52b077a48c743ba4d08ac00520a0bf1ef6deef5f (patch) | |
tree | b4205c194167e0e03e273957cdd0aab3be9fdf01 /core/namespace/Template | |
download | blog-52b077a48c743ba4d08ac00520a0bf1ef6deef5f.tar.gz blog-52b077a48c743ba4d08ac00520a0bf1ef6deef5f.tar.xz blog-52b077a48c743ba4d08ac00520a0bf1ef6deef5f.zip |
Initial commit.v1.0
Diffstat (limited to 'core/namespace/Template')
-rw-r--r-- | core/namespace/Template/Exception.php | 5 | ||||
-rw-r--r-- | core/namespace/Template/Factory.php | 18 | ||||
-rw-r--r-- | core/namespace/Template/Template.php | 72 |
3 files changed, 95 insertions, 0 deletions
diff --git a/core/namespace/Template/Exception.php b/core/namespace/Template/Exception.php new file mode 100644 index 0000000..52c522e --- /dev/null +++ b/core/namespace/Template/Exception.php @@ -0,0 +1,5 @@ +<?php +namespace Template; + +class Exception extends \ExceptionHandler {} +?>
\ No newline at end of file diff --git a/core/namespace/Template/Factory.php b/core/namespace/Template/Factory.php new file mode 100644 index 0000000..a90c61e --- /dev/null +++ b/core/namespace/Template/Factory.php @@ -0,0 +1,18 @@ +<?php +namespace Template; + +class Factory extends \Factory implements \FactoryInterface { + public static function build($template): Template { + $Template = new Template(ROOT.'template/'.\Application::get('TEMPLATE.NAME')."/html/{$template}.php"); + $Template->set('Language', \Application::getLanguage()); + $Template->set('BLOGMETA', [ + 'NAME' => \Application::get('BLOGMETA.NAME'), + 'DESC' => \Application::get('BLOGMETA.DESC'), + 'MAIL' => \Application::get('BLOGMETA.MAIL'), + 'LANG' => \Application::get('BLOGMETA.LANG'), + ]); + + return $Template; + } +} +?>
\ No newline at end of file diff --git a/core/namespace/Template/Template.php b/core/namespace/Template/Template.php new file mode 100644 index 0000000..0c68f92 --- /dev/null +++ b/core/namespace/Template/Template.php @@ -0,0 +1,72 @@ +<?php +namespace Template; + +class Template { + private $filename = ''; + private $parameters = []; + + #=============================================================================== + # Create template instance + #=============================================================================== + public function __construct($filename) { + $this->filename = $filename; + + if(!file_exists($filename)) { + throw new Exception("Template {$filename} does not exists."); + } + } + + #=============================================================================== + # Set value to array path + #=============================================================================== + public function set($name, $value) { + if(!is_array($name)) { + return $this->parameters[$name] = $value; + } + + $current = &$this->parameters; + + foreach($name as $path) { + if(!isset($current[$path])) { + $current[$path] = []; + } + $current = &$current[$path]; + } + + return $current = $value; + } + + #=============================================================================== + # Add value as item to array path + #=============================================================================== + public function add($paths, $value) { + if(!is_array($paths)) { + return $this->parameters[$paths][] = $value; + } + + $current = &$this->parameters; + + foreach($paths as $path) { + if(!isset($current[$path])) { + $current[$path] = []; + } + $current = &$current[$path]; + } + + return $current[] = $value; + } + + #=============================================================================== + # Return parsed template content + #=============================================================================== + public function __toString() { + foreach($this->parameters as $name => $value) { + ${$name} = $value; + } + + ob_start(); + require $this->filename; + return ob_get_clean(); + } +} +?>
\ No newline at end of file |