Нужен совет по шаблонированию с PHP / HTML - PullRequest
2 голосов
/ 02 апреля 2011

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

Кажется странным, что страница по умолчаниюстраница пользователя иногда будет представлять только логику представления, а иногда только бизнес-логику.Кажется, что есть два очевидных решения этого:

1) У всех страниц по умолчанию есть бизнес-логика (даже если ее нет), которая ссылается на логику представления на другой странице.Проблема в том, что существует много «ненужных» страниц.Хорошо, что она согласована.

2) Если для страницы нет бизнес-логики, просто включите только логику представления.Проблема заключается в том, что при рассмотрении имен файлов непонятно, какая страница php включает в себя бизнес-логику и логику представления.

Кроме того, и это может быть немного не по теме, но есть ли способ шаблонироватьthis?

<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>My Website</title>
        <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
        <link href="styles.css" rel="stylesheet" type="text/css"/>
        <link href="favicon.png" rel="shortcut icon" />
    </head>
    <body>
    </body>
</html>

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

1 Ответ

4 голосов
/ 02 апреля 2011

Ваши шаблоны должны содержать строго презентационную логику.

Это означает, что вы можете включить:

  • Циклы (для печати списков и т. Д.)
  • Условные выражения (например, печать только элемента, если какое-либо значение не равно нулю)
  • Функции форматирования (пробелы, круглые числа и т. Д.)
  • Небольшое количество вызовов вспомогательных функций компоновки шаблона(например, «пожалуйста, включите этот другой суб-шаблон здесь»)

, но больше ничего - и особенно не бизнес-логика! (если я забыл что-то важное, пожалуйста, упомяните об этом вкомментарий)

Кроме того, ваши шаблоны («представления») никогда не должны использоваться в качестве целевых URL-адресов, используемых вашим приложением.Необходимо, чтобы URL-адреса указывали (возможно, на один из многих) сценариев «контроллера», которые затем вызывают необходимую бизнес-логику и передают результаты в ваш шаблон для отображения, включая шаблон.Это легко понять, если вы знакомы с Model-View-Controller;если нет, сначала ознакомьтесь.

Наконец, вот один из способов, которым вы можете создать шаблон разметки, которую вы дали:

<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title><?php echo $title;?></title>
        <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<?php foreach ($stylesheets as $stylesheet) : ?>
        <link href="<?php echo $stylesheet;?>" rel="stylesheet" type="text/css"/>
<?php endforeach; ?>
        <link href="favicon.png" rel="shortcut icon" />
    </head>
    <body>
    </body>
</html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...