Создание представлений в PHP – лучшая практика

Я работаю над сайтом с двумя другими разработчиками. Я отвечаю только за создание мнений.

Данные доступны в объекте, и у меня есть получатели, чтобы читать данные, а затем создавать страницы 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;