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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Templater

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Описание: Как сделать наследование шаблонов?
Opposite
Отправлено: 05 Марта, 2012 - 20:34:17
Post Id



Гость


Покинул форум
Сообщений всего: 109
Дата рег-ции: Март 2012  


Помог: 4 раз(а)




Терпеть не могу 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.  
 
 Top
DelphinPRO
Отправлено: 05 Марта, 2012 - 20:36:34
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




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 есть предопределенная константа


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB