Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Templater
Форумы портала PHP.SU » » Вопросы новичков » Templater

Страниц (1): [1]
 

1. Opposite - 05 Марта, 2012 - 20:34:17 - перейти к сообщению
Терпеть не могу Smarty и подобные ему шаблонизаторы. Люблю нативный синтаксис php, но мне в голову не приходит, как сделать вызов функции некоторого класса "А" напрямую из шаблона, наример,
PHP:
скопировать код в буфер обмена
  1. <title><?PHP echo $this -> call_funct(classname, function);
.

Плюс ко всему есть желание сделать наследование шаблонов, но я не представляю, как передавать переменные из одного шаблона в другой. Если есть какие идеи, подкиньте пожалуйста, или скиньте ссылка на ресурс, ибо я перерыл уже много, и уже было желание изучать zend engine, но это для меня, мне кажется, будет пока сложным.

Вот мой набросок, просто набросок Огорчение
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3.         define("SEPARATOR", '/');
  4.         class Templater {
  5.                 private $data;
  6.                
  7.                 public $template_dir;
  8.                
  9.                 public function __construct() {
  10.                         $this->data = array();
  11.                         $this->template_dir = '.';
  12.                 }
  13.                
  14.                 public function __set($key, $value) {
  15.                         $this->data[$key] = $value;
  16.                 }
  17.                
  18.                 public function __get($key) {
  19.                         return $this->data[$key];
  20.                 }
  21.                
  22.                 public function __isset($key) {
  23.                         return isset($this->data[$key]);
  24.                 }
  25.                
  26.                 public function display($template) {
  27.                         include $_SERVER['DOCUMENT_ROOT'] . SEPARATOR . $this->template_dir . SEPARATOR . $template;
  28.                 }
  29.                
  30.                 public function __call($method, $args) {
  31.                         call_user_func_array($method, $args);
  32.                 }
  33.         }
  34.  
2. DelphinPRO - 05 Марта, 2012 - 20:36:34 - перейти к сообщению
Opposite пишет:
как сделать вызов функции некоторого класса "А" напрямую из шаблона,


в шаблоне не должно быть вызовов функций. Вы зывайте функцию в экшене контроллера, и готовый результат передавайте в шаблон
(Добавление)
вызов подшаблонов можно сделать примерно так

PHP:
скопировать код в буфер обмена
  1. class Templater {
  2.                 public function load($template) {
  3.                         ob_start();
  4.                         include $_SERVER['DOCUMENT_ROOT'] . SEPARATOR . $this->template_dir . SEPARATOR . $template;
  5.                         return ob_get_clean();
  6.                 }
  7. }
PHP:
скопировать код в буфер обмена
  1. <div><?PHP echo $this->load('module.php'); ?></div>

примерно..
(Добавление)
Opposite пишет:
define("SEPARATOR", '/');


в php есть предопределенная константа
PHP:
скопировать код в буфер обмена
  1. DIRECTORY_SEPARATOR

 

Powered by ExBB FM 1.0 RC1