PhpTemplater.php 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. <?php
  2. namespace KarmaFW\Templates;
  3. class PhpTemplater
  4. {
  5. protected $variables = [];
  6. protected $layout = null;
  7. protected $plugins = [];
  8. public $templates_dirs = [];
  9. public function __construct($templates_dirs=null, $variables=[], $layout=null)
  10. {
  11. $this->setTemplateDirs($templates_dirs);
  12. $this->variables = $variables;
  13. $this->layout = $layout;
  14. }
  15. public function setVariables($variables=[])
  16. {
  17. $this->variables = $variables;
  18. }
  19. public function setAllVariables($var_name, $var_value)
  20. {
  21. $this->variables[$var_name] = $var_value;
  22. }
  23. public function setTemplateDirs($templates_dirs=[])
  24. {
  25. if (empty($templates_dirs) && defined('TPL_DIR')) {
  26. $templates_dirs = explode(':', TPL_DIR);
  27. } else if (is_string($templates_dirs)) {
  28. $templates_dirs = explode(':', $templates_dirs);
  29. } else if (is_array($templates_dirs)) {
  30. } else {
  31. $templates_dirs = [];
  32. }
  33. $this->templates_dirs = $templates_dirs;
  34. }
  35. public function assign($var_name, $var_value=null)
  36. {
  37. if (is_array($var_name)) {
  38. foreach ($var_name as $k => $v) {
  39. $this->assign($k, $v);
  40. }
  41. return $this;
  42. }
  43. $this->variables[$var_name] = $var_value;
  44. return $this;
  45. }
  46. function tpl($tpl_path=null, $variables=[], $layout=null, $templates_dirs=[])
  47. {
  48. $variables = array_merge($this->variables, (is_array($variables) ? $variables : []) );
  49. $templates_dirs = array_merge($this->templates_dirs, (is_array($templates_dirs) ? $templates_dirs : []) );
  50. return new PhpTemplate($tpl_path, $variables, $layout, $templates_dirs);
  51. }
  52. }