Я программирую свой первый настоящий PHP-сайт и задаюсь вопросом, как сделать свой код более читабельным для себя. Справочник, который я использую, - PHP и MySQL Web Development, 4-е издание.
Вышеупомянутая книга дает три подхода к разделению логики и содержания:
- включить файлы
- API функции или класса
- система шаблонов
Я еще не выбрал ни одного из них, поскольку обдумывание этих понятий занимает некоторое время. Однако мой код стал неким гибридом первых двух, так как я просто копирую здесь и изменяю по ходу работы.
На стороне презентации все мои страницы имеют следующие общие элементы: верхний колонтитул, верхняя навигация, боковая панель навигации, контент, правая боковая панель и нижний колонтитул.
Примеры на основе функций в книге предполагают, что у меня могут быть эти функции отображения, которые обрабатывают весь пример презентации. Итак, код моей страницы будет выглядеть так:
display_header();
display_navigation();
display_content();
display_footer();
Однако мне это не нравится, потому что в примерах, приведенных в книге, эти операторы печати смешаны с HTML и PHP следующим образом:
echo "<tr bgcolor=\"".$color."\"><td><a href=\"".$url."\">" ...
Я бы предпочел иметь HTML с некоторым PHP в середине, а не наоборот.
Я думаю о том, чтобы сделать свои страницы так, чтобы в начале моей страницы я получал все данные из базы данных и помещал их в массивы. Я также получу данные для переменных. Если есть какие-либо ошибки в любом из этих процессов, я помещу их в строки ошибок.
Затем, в HTML-коде, я переберу эти массивы, используя foreach, и покажу содержимое. В некоторых случаях будут некоторые переменные, которые будут показаны. Если есть переменная ошибки, которая будет установлена, я покажу ее в правильном положении.
(В качестве примечания: я не понимаю, что в большинстве примеров кода, если какой-либо запрос к базе данных или еще что-то приводит к ошибке, всегда есть:
else echo 'Error';
Это сбивает меня с толку, потому что, когда код примера выдает ошибку, он иногда выводится на экран даже перед запуском HTML ...)
Для людей, которые использовали ASP.NET, я несколько привык к файлам кода и lblError, и я пытаюсь сделать что-то подобное здесь.
Единственное, что я не понял, так это то, как я мог бы сделать сначала «сделать логику, а затем презентацию», чтобы мне не пришлось копировать, например, логику навигации и навигационное представление на всех страницах.
Должен ли я сделать некоторые включаемые файлы или я могу использовать функции здесь, но немного по-другому? Есть ли хорошие статьи, в которых эти «стили» разделения представления и логики объясняются чуть более подробно. В этой книге только один абзац об этом материале.
Я думаю о том, что я говорю о некоторых концепциях или способах выполнения PHP-программирования здесь, но я просто еще не знаю термины для них.
Я знаю, что это не простой вопрос, мне просто нужна помощь в организации моих мыслей.