Попытка написать шаблонный класс PHP - это неправильно - PullRequest
3 голосов
/ 09 октября 2011

Я пытаюсь кое-что узнать о PHP и написать свой собственный класс шаблонов.Но это просто неэффективно.Разве производительность не получит удар от этого?Если вы можете, посмотрите и посмотрите, что не так:

<?

class Template {

    private $file, $template, $data;

    public function __construct($file) {
            $this->template = file_get_contents('views/wrapper.php');
            $this->file = file_get_contents('views/'.$file.'.php');
    }

    public function __set($key, $val) { $this->data[$key] = $val; }

    public function __get($key) { return $this->data[$key]; }

    private function replaceAll() {
        foreach($this->data AS $key => $val)
            $this->template = str_replace('@'.$key, $val, $this->template);
        $this->template = str_replace('{LOAD}', $this->file, $this->template);
    }

    public function render() {
        $this->replaceAll();
        echo $this->template;
    }
}

?>

Я хочу использовать оболочку, которая содержит заголовок нижнего колонтитула +, который содержит боковую панель / навигацию.Поэтому мне нужно как-то динамически установить активный класс, а затем я хочу иметь возможность загружать представление на основе конструктора или чего-то подобного.Это то, что я делаю .. хорошо?

Ответы [ 2 ]

5 голосов
/ 09 октября 2011

__ get и __set функции очень медленные. замена строк тоже довольно медленная. почему вы делаете свой шаблон таким образом? Что делать, если вы сделали что-то подобное?

шаблон класса

class template {

   protected $templateFile;

   public function __construct($template_file) {
      $this->templateFile = $template_file;
   }

   public function render() {
      require($this->templateFile);
   }
}

файл шаблона

<html>
   <p><?= $this->someProperty ?></p>
</html>

использование

$view = new template($template_file_path);
$view->someProperty = 'hello world';
$view->render();

Единственным недостатком было бы то, что тот, кто пишет шаблоны, также имел бы доступ к написанию PHP.

2 голосов
/ 09 октября 2011

Вы хотите, чтобы ваш анализатор шаблонов был универсальным, поэтому не используйте статические файлы, такие как ваш wrapper.php!Если вы хотите взглянуть на создание простого анализатора шаблонов, я рекомендую это:

http://www.broculos.net/en/article/how-make-simple-html-template-engine-php

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...