Представитель Шуры Люберецкого в ЖЖ (brat_luber) wrote,
Представитель Шуры Люберецкого в ЖЖ
brat_luber

Кстати, про веб-программизм

Одной из самых неудачных черт PHP (да и вообще современного сайтостроительства) лично я считаю то, что очень неудобно хранить настройки где-либо, кроме базы данных. Конечно, почти всегда существует текстовый файлик с назанием типа config.php или config.inc, но в нем прописываются только параметры, необходимые для доступа к БД. В вордпрессе, например, такие параметры, как часовой пояс, название темы оформления и тому подобные хранятся в отдельной таблице БД, имеющей очень простую структуру – имя+значение. Если надо “узнать” один из этих параметров – пишите запрос :)

Я не знаю, как это можно “согласовать” с реляционной моделью, но, к сожалению, более удобного способа хранить какой-нибудь ассоциативный массив (”хеш”) между различными выполнениями скрипта в PHP нет. Но дело не только в этом. Как мне кажется, подобное использование БД – “нецелевое”, оно провоцирует на то, чтобы рассматривать базу данных, как какую-то “помойку” без определенной структуры, а не на очень удобное средство для хранения и (что более важно) выборки данных.

Хорошо спроектированная база данных вообще не нуждается в PHP-обертке, роль скриптов должна сводиться к “красивому” форматированию данных, полученных SELECT-ом. Может, конечно, я заново изобретаю велосипед (во всяком случае, идеи очень похожи на принцип Model-View-Controller), или призываю к “экстремизму”, но вот мне кажется, что большинство движков веб-сайтов можно заменить на PHP MyAdmin :) Наверное, вряд ли это новость, но недавно я видел одну систему, построенную по довольно оригинальному принципу: есть база данных с кучей таблиц. Каждая таблица соответствует страничке сайта, которые строятся одним и тем же скриптом. Данные в таблицы можно добавлять через автоматически генерируемые веб-формы.

В принципе, это еще один шаг в сторону “веб-программирования мышкой“. Уже есть автоматизированные средства создания структуры БД (например, на основе Entity-Relationship диаграмм). При желании можно определить “визуализаторы” для различных типов SQL-запросов (например, запись в блоге или лента записей выводятся с указанием заголовка, автора, даты и т. п., комментарии – “лесенкой” или линейно), “вставить” их мышкой на страничку и получить готовую CMS для блога. Например, страничка, содержащая запись и комментарии к ней, полностью генерируется за два запроса:

SELECT author, title, text FROM entries WHERE entryid=$id;
SELECT author, text FROM comments WHERE entryid=$id;

Достаточно правильно отформатировать то, что вернула нам СУБД – и все готово!

Конечно, реальные запросы будут сложнее, например, явно стоит сделать таблицу authors (с полями типа name, surname, avatar), которую надо “соединять” с entries и comments, но все содержимое страницы определяется только SQL-запросами.

Есть, конечно, шутки об уникумах, которые сооружали сайты только на SQL-запросах (да-да, добавляя туда HTML-форматирование), и тем самым обеспечивали себе свое рабочее место до глубокой старости (потому что ни один пэхэпист ни в жисть не поймет, что это за извращение), но разве нельзя так делать сайты? И разве всем так нужны возможности тьюринг-полного PHP, когда вся его роль может быть сведена к форматированию отданных СУБД данных?

Запись опубликована в блоге Шуры Люберецкого. Вы можете оставлять свои комментарии там, используя свое имя пользователя из ЖЖ (вход по OpenID).

Tags: программирование, сайтоводство
Subscribe

  • Про русские форумы

    Думаю, все знают эту шутку? Американский форум: ты задаешь вопрос, тебе отвечают. Еврейский форум: тебе отвечают вопросом на вопрос. Русский…

  • Смелые люди

    Согласно опросу, 39% пользователей Wordpress не читают, что же изменилось в установленных у них плагинах перед обновлением:…

  • Закон ни о чем

    Прожужжали все уши новым “законом о блоггерах” ( № 97-ФЗ от 05.05.2014), который должен окончательно задушить Рунет и установить в нем…

Comments for this post were disabled by the author