PhpTemplater.php 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  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 getVariables() {
  20. return $this->variables;
  21. }
  22. public function setAllVariables($var_name, $var_value)
  23. {
  24. $this->variables[$var_name] = $var_value;
  25. }
  26. public function setTemplateDirs($templates_dirs=[])
  27. {
  28. if (empty($templates_dirs) && defined('TPL_DIR')) {
  29. $templates_dirs = explode(':', TPL_DIR);
  30. } else if (is_string($templates_dirs)) {
  31. $templates_dirs = explode(':', $templates_dirs);
  32. } else if (is_array($templates_dirs)) {
  33. } else {
  34. $templates_dirs = [];
  35. }
  36. $this->templates_dirs = $templates_dirs;
  37. }
  38. public function assign($var_name, $var_value=null)
  39. {
  40. if (is_array($var_name)) {
  41. foreach ($var_name as $k => $v) {
  42. $this->assign($k, $v);
  43. }
  44. return $this;
  45. }
  46. $this->variables[$var_name] = $var_value;
  47. return $this;
  48. }
  49. function tpl($tpl_path=null, $variables=[], $layout=null, $templates_dirs=[])
  50. {
  51. $variables = array_merge($this->variables, (is_array($variables) ? $variables : []) );
  52. $templates_dirs = array_merge($this->templates_dirs, (is_array($templates_dirs) ? $templates_dirs : []) );
  53. return new PhpTemplate($tpl_path, $variables, $layout, $templates_dirs);
  54. }
  55. }