Я работаю над сайтом с двумя другими разработчиками. Я отвечаю только за создание мнений.
Данные доступны в объекте, и у меня есть получатели, чтобы читать данные, а затем создавать страницы XHTML.
Какова наилучшая практика для этого, без использования какого-либо механизма шаблонов?
Большое спасибо.
Если вы не хотите использовать механизм шаблонов, вы можете использовать базовые возможности шаблонов PHP.
Фактически, вы должны просто написать HTML, и всякий раз, когда вам нужно вывести значение переменной, откройте часть PHP с помощью <?php
и закройте ее с помощью ?>
. Я буду предполагать для примеров, что $data
– ваш объект данных.
Например:
<div id="fos"><?php echo $data->getWhatever(); ?></div>
Обратите внимание, что все структуры управления PHP (например, if
, foreach
, while
и т. Д.) Также имеют синтаксис, который можно использовать для шаблонов. Вы можете посмотреть их на своих страницах руководства PHP.
Например:
<div id="fos2"> <?php if ($data->getAnother() > 0) : ?> <span>X</span> <?php else : ?> <span>Y</span> <?php endif; ?> </div>
Если вы знаете, что использование коротких тегов будет включено на сервере, для простоты вы также можете использовать их (не рекомендуется в XML и XHTML). С помощью коротких тегов вы можете просто открыть свою часть PHP с помощью <?
и закройте его ?>
. Кроме того, <?=$var?>
Является сокращением для эха.
Первый пример с короткими тегами:
<div id="fos"><?=$data->getWhatever()?></div>
Вы должны знать, где вы используете разрывы строк и пробелы. Браузер получит тот же текст, который вы пишете (кроме частей PHP). Что я имею в виду:
Написание этого кода:
<?php echo '<img src="x.jpg" alt="" />'; echo '<img src="y.jpg" alt="" />'; ?>
не эквивалентен этому:
<img src="x.jpg" alt="" /> <img src="y.jpg" alt="" />
Потому что во втором у вас есть фактическое \n
между img
элементами, которое будет транслироваться браузером как символ пробела и отображаться как фактическое пространство между изображениями, если они являются встроенными.
Для чтения данных используйте отдельный файл:
<?php if ($foo == False) { $bar = 1; } else { $bar = 0; } ?>
Затем ссылайтесь на полученное состояние в файле HTML:
require 'logic.php'; <html> <!--...--> <input type="text" value="<?php echo $bar; ?>" > //Logic is separated from markup <!--...--> </html>
я не знаю, что я полностью понимаю ваш вопрос. поэтому, если мой ответ не будет отменен, я захочу удалить
этот класс создаст простой вид
class View { public function render($filename, $render_without_header_and_footer = false) { // page without header and footer, for whatever reason if ($render_without_header_and_footer == true) { require VIEWS_PATH . $filename . '.php'; } else { require VIEWS_PATH . '_templates/header.php'; require VIEWS_PATH . $filename . '.php'; require VIEWS_PATH . '_templates/footer.php'; } } private function checkForActiveController($filename, $navigation_controller) { $split_filename = explode("/", $filename); $active_controller = $split_filename[0]; if ($active_controller == $navigation_controller) { return true; } // default return return false; } private function checkForActiveAction($filename, $navigation_action) { $split_filename = explode("/", $filename); $active_action = $split_filename[1]; if ($active_action == $navigation_action) { return true; } // default return of not true return false; } private function checkForActiveControllerAndAction($filename, $navigation_controller_and_action) { $split_filename = explode("/", $filename); $active_controller = $split_filename[0]; $active_action = $split_filename[1]; $split_filename = explode("/", $navigation_controller_and_action); $navigation_controller = $split_filename[0]; $navigation_action = $split_filename[1]; if ($active_controller == $navigation_controller AND $active_action == $navigation_action) { return true; } // default return of not true return false; } }
soo теперь вы можете создавать свои шаблоны и можете вызывать их из любого места,
$this->view->my_data = "data"; $this->view->render('index/index'); //
и на вашем index / index.php вы можете вызывать данные $ this-> my_data;