PHP View, работа с шаблонами - PullRequest
3 голосов
/ 05 декабря 2011

Ну, мой вопрос очень прост, но немного сложно принять решение, но в любом случае ... это следующее, у меня есть 'mini-framework', что-то, что нужно для написания одной схемы, помогает мнемного, ускорить работу над некоторыми вещами, однако, вопрос даже с точки зрения, в некотором смысле, использование схемы шаблонов очень легко и также очень интересно, потому что, когда вам нужно что-то изменить related to visualization, шаблон меняется только,но тогда, вовремя к render this template, что является лучшим способом?В настоящее время я работаю следующим образом:

<?php

          class View {

                 private $vars;

                 public function __get ( $var ) {
                        if ( isset( $this->vars [ $var ] ) ) {
                               return $this->vars[ $var ];
                        }
                 }

                 public function assign ( $var , $value ) {
                        $this->vars [ $var ] = $value;
                 }

                 public function show ( $template ) {
                        include_once sprintf ( "%s\Templates\%s" , __DIR__ , $template ) ;
                 }

          }

Это не полный код, я строю структуры и проверяю схему, поэтому я делаю следующее ..

<?php
          require_once 'MVC/Views/View.php';
          $View = new View ( ) ;

          $View->assign( 'title' , 'MVC, View Layer' ) ;
          $View->show ( 'test.phtml' );

И шаблон

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
       <head>
              <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
              <title><?php echo $this->title ?></title>
       </head>
       <body>

       </body>
</html>

Вывод правильный, all working as expected, но у меня вопрос: это лучший способ сделать?включая файл и разрешение воспроизведения воспроизводит код, написанный в .phtml

1 Ответ

4 голосов
/ 05 декабря 2011

Во многих рамках я видел такие утверждения:

public function show ( $template ) {
  ob_start();
  require sprintf ( "%s\Templates\%s" , __DIR__ , $template ) ;
  return ob_get_flush();
}

Используя выходной буфер, вы можете получить шаблон в виде строки вместо прямой отправки в выводе. Это может пригодиться, когда вам нужно изменить заголовки после оценки шаблона или выполнить постобработку.

Использование require вместо include_once позволит вам визуализировать один и тот же шаблон несколько раз (например, если вы хотите иметь какую-то композицию шаблонов) и получить ошибку, если файл шаблона не найден (include не дает ошибка в этой ситуации).

...