На каком движке лучше всего создавать сайт?

#1
Само понятие «движок для сайта» – очень широкое, это может быть как один управляющий скрипт index.php, в котором стандартной PHP функцией include() собираются («инклудятся») файлы, содержащие статические куски HTML кода, так и более сложные программы, CMS из их числа. Приведу простой пример. Содержимое следующих частей сайта: «шапка», блок с меню, блок с контентом и «подвал» — вынесено в отдельные файлы, которые собираются в единое целое в index.php. Файлы (страницы) с контентом, если их много, можно вынести в отдельную папку /include и «инклудить» уже из нее при помощи массива, при этом для каждой страницы можно создать уникальные заголовки и мета-данные, прописанные в конфигурационном файле config.php.

Это приблизительный вариант создания собственного движка для сайта. Пример кода — не привожу, потому что на данном этапе вам важно понять только принцип организации движка.


О роли СУБД в процессе создания сайта


Очень часто для удобного обращения с большим количеством данных программисты (и не только) используют базы данных. В случае с сайтом, текстовое или графическое содержимое часто выносится в базу данных, которая хранится на удаленном сервере. Примером СУБД (системы управления базами данных) является MySQL. Вы, наверняка, познакомитесь с MySQL (или PostgreSQL) при организации хостинг-пространства для вашего сайта, использовании более-менее сложного скрипта, или в процессе установки CMS системы. Но сейчас мы не о параметрах хостинга, сейчас речь о технологии.



Технологически это так: данные расположенные в базе создаются, модифицируются и управляются при помощи SQL-запросов, которые, в свою очередь, создаются на основе языка структурированных запросов SQL. Но это в чистом виде. Язык PHP, в свою очередь, наделен различными функциями для работы с MySQL. Через php-скрипт мы можем подключаться к серверу MySQL и выбирать базу данных (mysql_connect(), mysql_select_db()), передавать sql-запросы (mysql_query()), обрабатывать результаты запросов (пусть mysql_fetch_array()) и завершать mysql-соединения.

Под сервером базы данных понимается не только отдельно установленная машина выполняющая роль сервера MySQL, но и функциональный сервер. Грубо говоря одна «железка» может служить и web-сервером (apache, nginx), и mysql-сервером и т.д. Но об этом мы поговорим в статье, посвященной выбору хостинга. Как вы уже поняли, подобные технологии применяются при создании/управлении сайта в целом. Следует заметить, что web-программисты иногда используют базы данных на текстовых файлах, но это уже отдельная история.


Что лучше: «голый» PHP или фреймворк?


Наверное подобная тема не совсем для новичков, тема достаточно «холиварная», но иметь некоторые представления будет не лишним для того, чтобы правильно определиться с выбором лучшего движка для своего сайта. Если мы берем за основу PHP, а есть и другие скриптовые языки программирования, то следует сказать, что многие программисты используют так называемые MVC-фреймворки основанные на языке PHP. Использование фреймворков — это особый подход к проектированию и созданию веб-проектов. Zend Framework, Symfony, CodeIgniter, Kohana и многие другие, созданы для быстрой разработки приложений на PHP, но это не единственный критерий. Однако, сам фреймворк вам тоже придется изучать. Многие фреймворки, как своеобразная «надстройка» над PHP — требовательны к ресурсам сервера. Специалисты много и упорно спорят на тему: «Что лучше использовать в качестве движка для сайта?». Одни утверждают, что если есть PHP, тогда зачем фреймворк, зачем посредник «съедающий кусок ресурсного пирога», ссылаясь на то, что самые крупные и популярные сайты написаны на чистом PHP. Другие считают разработку при использовании фреймворка более передовой и удобной — следующим шагом на пути развития PHP программиста. Некоторые считают, что при использовании фреймворка, при определенных условиях, можно даже «выиграть» в производительности. Сам PHP умеет работать в разных режимах (например — mod_php), что также может сказаться на производительности.

Кодить самому или выбрать решение из «коробки»?


При создании сайта на PHP или PHP + фреймворк нужно отдавать себе отчет в том, что уровень программирования у всех разный, что для создания мощного сайта не достаточно просто знаний синтаксиса языка. Критериев к качественно исполненному (с программной точки зрения) сайту — очень много (безопасность, функциональность, производительность и т.д.) и учесть всех нюансов часто не под силу начинающему. Есть специалисты, занимающиеся исключительно тестированием новых программных проектов, эта не простая процедура очень важна при создании сайта с использованием уникального программного кода. Все это не зря и именно об этом вспоминают опытные программисты, когда употребляют неблагозвучную фразу «говнокод» по отношению к очередному кривому модулю для популярной CMS или какому-то неудачному проекту с открытым исходным кодом. Все это говорит о том, что определиться с лучшим движком для своего сайта можно только в том случае, если подбирать движок под конкретные особенности своего сетевого проекта

Не бывает ничего идеального и не секрет, что даже многие CMS (распространяемые под разными лицензиями, в том числе и коммерческие) не всегда (или не полностью) соответствуют вышеперечисленным критериям качества программного кода. Однако, пишут CMS и составляют обновления для них программисты высокой квалификации (в большинстве своем), подобные системы тестируются на проектной стадии и сообществом, что сокращает шансы напороться на проблемы разного характера. Для коммерческих CMS расширения (компоненты, модули, плагины) создаются централизованной группой разработчиков самой CMS или одной из групп, а вот расширения для open source CMS могут создаваться кем угодно и как угодно. Зачастую, именно в расширениях и наблюдается «говнокод» — со всеми вытекающими. Однажды, один из моих сайтов на базе CMS Joomla был взломан по вине хостинг провайдера (да, хостеры тоже грешат «криворукостью»), но вредоносный код был размещен именно в сторонних расширениях (популярных и с хорошей репутацией). В целом, статей на данную тему в интернете больше чем «пупырышек на теле бегемота», но понимание придет не сразу, потому что все это уже из области программирования, которым владеют не все создатели сайта. Не всем оно и надо. Теперь пора поговорить о CMS системах подробнее, моя следующая статья посвящена именно им — системам управления контентом (CMS).
 
Вверх