Использование многоуровневого дизайна PHP / HTML? Это правильно? - PullRequest
0 голосов
/ 27 января 2012

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

  • выборка: получение информации из базы данных / сеанса и т. Д.
  • логика: расчетчто вам нужно
  • Презентация: отображение HTML

Итак, во-первых, это хорошая идея?Я вижу некоторые очевидные преимущества (организация, простота модификации).Во-вторых, учитывая, что с этой моделью эхо-код HTML не годится, я должен хранить нужный мне HTML-код в переменных?

Пример:

<?php

/** fetch **/
include("session_validator.php");

$secret = $_GET['secret'];

mysql_connect($host, $user, $pass);
// connect and query
$username = mysql_result($result, 0, 'username');

/** logic **/
if (isset($secret)) {
    $message = "You know the secret!";
} else {
    $message = "The secret is wrong";
}

/** presentation **/
?>
<html>
<body>
    Username: <?php echo $username; ?> <br>
    Secret? <?php echo $message; ?>
</body>
</html>

Чтобы повторить мой вопрос, хранится моя информацияв $message и закрытие раздела PHP перед презентацией - хорошая идея?Или я неправильно понимаю всю многоуровневую концепцию?

Ответы [ 3 ]

2 голосов
/ 27 января 2012

Этот дизайн часто называют MVC (Model View Controller), и он немного отличается от того, что вы описали:

  • Контроллер - часть, получающая запросы и обрабатывающая их. Он вызывает Models и Views .
  • Модель - логическая часть, здесь вступает в силу тяжелое кодирование PHP. Это та часть, где вы извлекаете информацию из баз данных / файлов, выполняете вычисления, а затем возвращаете данные обратно в Controller .
  • Просмотр - презентационная часть вашего приложения, обычно она в основном содержит HTML (и / или другие клиентские языки) и представляет собой страницу, представленную клиенту. Контроллер передает данные от Model к нему, а затем их можно проанализировать ( Views обычно допускает код PHP внутри них) и представить.

Я думаю, что это хороший шаблон, потому что он обеспечивает четкое разделение и простоту обслуживания. Это также позволяет разделить работу между интерфейсом и фоном (особенно если у вас разные разработчики для каждой стороны!).

Что касается отражающей части, единственное место, где вы могли бы отображать HTML, - это ваш Просмотр , так что там нет проблем.

Я предлагаю вам взглянуть на хорошо документированный фреймворк (например, ) и начать читать.

1 голос
/ 27 января 2012

Я лично использую объектно-ориентированную среду php, которая обрабатывает все выполняемые задачи, и это позволяет страницам, получающим запрос, иметь длину всего 5 строк (или около того). Это лучше, потому что тогда вы можете сосредоточиться на своем View позже и хранить весь код в одном месте, чтобы вам не приходилось перебирать его в поисках.

Но поверьте мне, когда я говорю это, у каждого программиста есть свои разные методы, поэтому на самом деле нет неправильного способа делать вещи.

0 голосов
/ 27 января 2012

Это правильный способ сделать это.Однако, когда вы выводите переменную в HTML, вы должны убедиться, что вы правильно ее избегаете.Делать это прямо из PHP будет означать использование htmlentities ().Я рекомендую вам написать оберточную функцию вокруг нее, потому что аргументы, которые ей нужны, немного утомительны.

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

Однако в вашем подходе нет ничего плохого.Пока существует четкое разделение между фактическим кодом и логикой дисплея, у вас не будет особых проблем в будущем.Вы можете переместить HTML-часть в отдельный файл и также включить ее с другой страницы, чтобы сделать разделение еще более четким.

Я сам использую фреймворки, но если вы все еще учитесь, держать его просто не такплохая вещь.

...