Я программирую свой первый реальный веб-сайт PHP и задаюсь вопросом, как сделать мой код более читаемым мне. Справочник, который я использую, является PHP и веб-разработкой MySQL 4-й редактор.
Вышеупомянутая книга дает три подхода к разделению логики и содержания:
Я еще не выбрал ни одного из них, поскольку обертывание моих мозгов вокруг этих понятий занимает время. Однако мой код стал некоторым гибридом первых двух, поскольку я - просто вставка копии далеко здесь и изменяющий, когда я иду.
На стороне презентации все мои страницы имеют эти общие элементы: заголовок, главная навигация, навигация боковой панели, содержание, правильная боковая панель и нижний колонтитул.
Функциональные примеры в книге предполагают, что у меня могли быть эти функции дисплея, которые обрабатывают весь пример презентации. Так, мой код страницы будет похож на это:
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, программирующий здесь, но я просто еще не знаю условия для них.
Я знаю, что это не прямой вопрос, я просто нуждаюсь в некоторой помощи в организации моих мыслей.
Никогда не выводить HTML с помощью PHP. Вместо этого напишите его встроенным ( без злых коротких тегов ) как
Другие варианты, помогающие отделить логику / представление было бы использовать PHP Framework, например CodeIgniter . Я бы отказался от книги и вместо этого сосредоточился на изучении основных навыков PHP, таких как функции, классы и т. Д. Затем начните играть с несколькими популярными фреймворками . В качестве примечания: то, что я не делаю
Поймите, что в большинстве примеров
код, если какой-то запрос к базе данных или
еще много чего выдает ошибку, есть
всегда: Это потому, что они неправильно отображают ошибки. Вы должны либо сохранить ошибки в сеансе, а затем отобразить их на странице (также очистив их), либо записать их в журнал ошибок с помощью функции Я не понял, как
Могу ли я сделать это "сначала займись логикой, а затем
презентация, чтобы я
не нужно повторять, например,
логика навигации и навигация
презентация на всех страницах. Подумайте о вещах в рамках подхода MVC . Сначала вы вызываете контроллер (логику). Он выясняет, что нужно. Если ему нужны данные из базы данных, он вызывает модель и запрашивает ее. Затем он форматирует его, добавляет другие данные, выполняет дополнительные запросы и затем передает их представлению. похоже, что шаблонизатор - это то, что вы ищете - спросите у Google много результатов. лично мне очень нравится smarty . (и выбросьте эту книгу, звучит так, будто она ... старая) Похоже, что MVC (Model View Controller) может подойти для ваших нужд. Вы можете прочитать об этом здесь
error_log
. error_log («Что-то случилось в MyClass»);
Похожие вопросы: