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/Template.php | |
download | blog-52b077a48c743ba4d08ac00520a0bf1ef6deef5f.tar.gz blog-52b077a48c743ba4d08ac00520a0bf1ef6deef5f.tar.xz blog-52b077a48c743ba4d08ac00520a0bf1ef6deef5f.zip |
Initial commit.v1.0
Diffstat (limited to 'core/namespace/Template/Template.php')
-rw-r--r-- | core/namespace/Template/Template.php | 72 |
1 files changed, 72 insertions, 0 deletions
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 |