Какую архитектуру я должен использовать для написания моего первого динамического веб-сайта в PHP?

Я просто хочу создать свой первый динамический веб-сайт. Я хочу использовать PHP, MYSQL, AJAX, HTML, CSS

У меня есть некоторые вопросы для начинающих:

  • Должен ли заголовок и панель навигации исключить в header.php и распечатать с помощью эха?

  • Если теги дизайна в эхо в php (например: <a>1 Test test</a> ) или только возвращают данные

  • Есть ли хороший пример для создания динамических веб-сайтов?

Моя основная проблема заключается в том, что я не знаю, как создать четкую структуру. Где сделать правильный дизайн (распечатать в php?)

Если это действительно ваш первый веб-сайт, я бы на самом деле не рекомендовал ничего использовать в рамках фреймворков. Это поможет вам некоторое время, чтобы получить удовольствие от HTML / CSS, SQL и PHP, не перегружая вас принципами более высокого уровня, такими как MVC (модель / просмотр / контроллер) и другие. Я в основном обеспокоен тем, что, начиная с рамки сразу, кривая обучения становится крутой и пропускает такие вещи, как удобство использования языка программирования, который вы будете использовать.

Вы, в конце концов, начнете беспорядок, но это только заставляет вас ценить рамки больше; вы можете перейти к использованию таких фреймворков , как CodeIgniter , Symfony или CakePHP (или другие, потому что есть целая группа).

Другие рамки, с которыми мне очень нравится работать, – это играть! для Java и Rails для Ruby. Поскольку вы заявили, что являетесь новичком, вы также можете рассмотреть их.

Ну, чтобы ответить на все ваши вопросы сразу. Единственная технология, в которой вы нуждаетесь, – это шаблон.

Шаблон – типичный PHP-скрипт, однако состоит в основном из чистого HTML, с некоторым кодом PHP только для отображения динамически генерируемых данных.

Создание шаблона основного сайта содержит как заголовок, так и навигационную панель и нижний колонтитул все остальное, за исключением фактического содержимого страницы.

Затем создайте отдельные страницы («разделы» вашего сайта: news.php, links.php и т. Д.). Но сделайте каждую страницу из двух частей: получение части данных и отображение части данных.
При получении данных не нужно печатать ни одного символа.
Если произошли некоторые ошибки, отобразите страницу с ошибкой.
Как только вы получите все свои данные без ошибок – пришло время включить основной шаблон.

Типичный сценарий может выглядеть так:

 <? //include our settings, connect to database etc. include dirname($_SERVER['DOCUMENT_ROOT']).'/cfg/settings.php'; //getting required data $DATA=dbgetarr("SELECT * FROM links"); // setting title for using in the main template $pagetitle = "Links to friend sites"; //etc //set page template filename $tpl = "links.tpl.php"; //and then finally call a template: include "main.tpl.php"; ?> 

где main.tpl.php – ваш основной шаблон сайта, включая общие части, такие как заголовок, нижний колонтитул, меню и т. д .:

 <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>My site. <?=$pagetitle?></title> </head> <body> <div id="page"> <? include $tpl ?> </div> </body> </html> 

и links.tpl.php – это фактический шаблон страницы:

 <h2><?=$pagetitle?></h2> <ul> <? foreach($DATA as $row): ?> <li><a href="<?=$row['link']?>" target="_blank"><?=$row['name']?></a></li> <? endforeach ?> <ul> 

В конце концов, вы можете прийти к более сложным проектам, например, с фронтальным контроллером, но для первого сайта это одно и просто и мощно.

  • Да, я рекомендую вам включать сценарии заголовка и navbar из другого файла, где вы можете поддерживать их самостоятельно. Я думаю, что это очень важно.
  • Я рекомендую вам echo / print html из php, а не вставлять php в html (проще при выполнении таких действий, как разбор $ _GET / $ _ POST и т. Д.),

Я рекомендую вам создать шаблон и другой скрипт, который имеет функции, которые печатают (или эхо) теги html, заголовок, нижний колонтитул, строку заголовка, навигационную панель и т. Д. Просто включите скрипт с функциями, и все ваши страницы могут иметь следующую структуру :

 <?php include 'html_display_functions.php'; /* put lines here to parse $_GET and $_POST, session_start()/$_SESSION,etc if needed */ print_html_pre_content(); print '<p>Hello, world! or other content.</p>'; print_html_post_content(); ?> 

Я обнаружил, что это довольно чисто, и легко добавить функциональность, когда вы можете возиться с $ _GET, $ _POST и $ _SESSION и т. Д.

Я бы предложил использовать некоторую систему шаблонов (Smarty был бы хорош). На самом деле не имеет значения, где вы на первый взгляд помещаете свой заголовок и панель навигации. Когда вам нужно исключить панель навигации и хранить ее отдельно? Когда вы хотите иметь возможность включать разные nav. баров в разных частях вашего сайта.

Например, у меня есть сайт с несколькими субдоменами: about.website.dev, special.website.dev и, скажем, terms.website.dev

В about.website.dev мои записи в навигационной панели будут: «Кто я», «Что мне делать», «Как круто я»; на special.website.dev: «Товары», «Решения», «Советы» и т. д.

Шаблон вашей панели навигации один и тот же: всего лишь петля, но все записи, но контент отличается. В этом случае вы отделяете панель навигации от заголовка. Если вы не используете шаблоны, вы просто создаете три файла (в данном случае): about.nav.php, special.nav.php и terms.nav.php, а затем просто включаете соответствующую панель навигации.

Если ваш nav. бар повсюду на вашем сайте, вы можете сохранить его в header.php. Как только вам нужно будет отделиться, это будет не сложно, но все же я предлагаю использовать шаблоны, хотя бы для того, чтобы привыкнуть к «правильной разработке сайтов».

Взгляните на различные системы шаблонов, такие как Smarty или Savant. Я лично, как и система шаблонов Django (python), больше всего. И привыкнуть отделять ваш взгляд и бизнес-логику.

ИМХО, вам было бы лучше взглянуть на фреймворк. например, список по адресу http://en.wikipedia.org/wiki/Comparison_of_web_application_frameworks#PHP

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

Когда вы знаете больше, вы можете затем вынести решение о том, какие рамки вы предпочитаете и которые соответствуют вашим потребностям или стилю кодирования, или даже вернуться к исходной php.

Если вам нужна хорошая книга по этому вопросу, попробуйте

  • Приложения базы данных MySQL / PHP от Брэда Балджера, Джей Гринспен и Дэвида Стена

То, что вы просите, в значительной степени зависит от вкуса. Чем сложнее ваше приложение, тем больше работы должно идти в сложную и поддерживаемую структуру.

Мое мнение таково: сначала изучите основы, а затем посмотрите на рамки. Это делает его намного легче, если вы понимаете, что происходит под капотом.

Попробуйте Agile Toolkit, возможно, самую легкую инфраструктуру интерфейса PHP, чтобы начать работу с веб-программного обеспечения.

Вы преодолеете множество проблем. http://agiletoolkit.org

В зависимости от выбора фреймворка / простого PHP вы должны делать это в соответствии со своей практикой. Например, в Agile Toolkit вы используете шаблоны, поэтому вы помещаете свой заголовок и нижний колонтитул в файл templates / jui / shared.html. Это объясняется в первом скринкасте.

Если вы изобретаете велосипед и продолжаете использовать простой PHP, тогда вам лучше делать include 'header.php'; , Хорошая структура позволяет вам не узнать о внутренней работе веб-программного обеспечения. Плохая структура требует, чтобы вы все знали.

Здесь уже много хороших ответов – но просто добавить ….

Разделите функциональность на отдельные файлы include и используйте последовательный способ поиска этих файлов.

Найдите хороший стиль программирования PHP и придерживайтесь его. например, орда , PEAR

Не включайте код или HTML в встроенные файлы include – он должен делать только что-то, когда вы специально вызываете его из управляющего скрипта.

Если вы включаете файлы, генерирующие HTML, убедитесь, что они предоставляют функциональность для закрытия любых тегов, которые они открывают. т.е. не только 'header.php'

Поскольку файлы CSS и Javascript не должны быть напрямую объявлены за пределами HEAD документа HTML, посмотрите, каким образом вызываемая функциональность может добавить их в существующий документ HTML – одно очевидное решение – использовать систему шаблонов в сочетании с выходной буферизацией, но вы можете также добавьте дополнительные файлы JS и CSS в раздел HEAD позже в документе с помощью javascript.

Использование MVC – http://www.yiiframework.com/doc/guide/1.1/en/basics.mvc См. Yii-framework http://yiiframework.com , у него есть все, что вам нужно 🙂