summaryrefslogtreecommitdiffstats
path: root/core/namespace/Template
diff options
context:
space:
mode:
authorThomas Lange <code@nerdmind.de>2017-02-24 21:27:59 +0100
committerThomas Lange <code@nerdmind.de>2017-02-24 21:27:59 +0100
commit52b077a48c743ba4d08ac00520a0bf1ef6deef5f (patch)
treeb4205c194167e0e03e273957cdd0aab3be9fdf01 /core/namespace/Template
downloadblog-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.php5
-rw-r--r--core/namespace/Template/Factory.php18
-rw-r--r--core/namespace/Template/Template.php72
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