Праздный join form php. MySQL JOIN: описание, пример использования команды и рекомендации. План выполнения JOIN запросов

Однако, работая фрилансером, часто встречаю сайты на самописных системах. Программисты пишут их не от хорошей жизни. В зависимости от степени простоты(сложности) проекта чрезмерно или наоборот недостаточно, применение готовой системы, и на ее переделки уходит больше времени, чем на создание сайта с нуля. К примеру, для сайта одностраничника не нужно тяжелой системы типа Joomla или фреймворка типа Yii , а у CMS типа Texpattern может не хватить функционала. Плюс задачи, которые ставит заказчик, могут быть весьма специфичными, и достаточно тяжело реализуемыми на готовой системе.

Для примера можно взять работы с моделями в . Речь идет об ActiveRecord. У Yii на официальном сайте есть отличный мануал по созданию блога . Если придерживаться его, и делать все, как написано, то через пару часов изучения, можно получить полноценный блог. С категориями, метками, пользователями и административной панелью.

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

Как сказал один наш комик - "тут начинается вестерн". То, что в SQL бы заняло 3 строчки кода, в Active Record займет пару ночей чтения мануалов, и экспериментов. Потому что, на первый взгляд тривиальная задача, вдруг вызывает необъяснимый баг Yii, о котором слышали полтора человека и оба китайцы. Пример не надуманный, те кто программировал на Yii используя Actve Record поддержат.

Эта методология работы с данными очень удобна, когда дело касается одной таблицы. Или даже двух, когда связь идет один ко многим, по одному полю. Настоящий ад начинается, когда нужно получить данные из нескольких таблиц.

В мире CMS тоже далеко ходить не надо. При работе над модулем Яндекс карт для Joomla нужно было подключить в админке сайта javascript файл. Недельное изучение системы ничего не дало. Такого функционала в модулях попросту нет. Надо сказать, что я выкрутился используя функционал расширенных полей подключил нужный файл. Но то, сколько времени у меня на это ушло, несоизмеримо с тем, если бы система была построена по моим законам, и я знал, что и где в ней подключается.

Об этом расскажу в этой статье. Как написать php фреймворк с нуля. Опишем основные техники проектирования MVC фреймворков на чистом php без использования сторонних библиотек.

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

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

Однако и плюсы тоже есть, система будет полностью под вашим контролем. Никаких ограничений API и требований системы. Только чистый vanilaPHP и ничего лишнего.

Оставим лирику, приступим наконец к коду.

Точка входа

Любой сайт, CMS или фреймворк начинается с точки входа. Обычно это index.php в корне сайта. Но мы не будем так делать. Чтобы программист, который работает с нашим фреймворком сразу разобрался, что все данные идут через точку входа, назовем файл main.php. Тогда будет очевидно - все запросы перенаправляются через.htaccess

AddDefaultCharset utf-8 RewriteEngine on php_value upload_max_filesize 50M php_value post_max_size 50M php_value display_errors 1 DirectoryIndex main.php?controller=index ErrorDocument 404 /main.php?controller=error RewriteRule ^index.html$ main.php RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ main.php?route=$1

Первые 8 строк - это вспомогательные настройки, которые пригодятся для фреймворка в будущем. Мы установили кодировку utf-8 по умолчанию, сайт будет работать на ней. Включили модуль apache Rewrite, для того чтобы перенаправить все не статичные запросы на main.php. Это и делают 3 последние строчки. Вся строка запроса, которая идет после домена, будет передана в переменную $_GET["route"]. Т.е. запрос http://sitename.ru/kolesa/perellli/?id=5 превратится в http://sitename.ru/main.php?route=kolesa/perellli/ &id=5

Дальнейшие манипуляции с разбором URL производятся с помощью PHP. Это распространенный прием, вы легко можете воспользоваться им в других системах. Так работает и Yii. Но наш фреймворк в отличие от Yii без.htaccess работать не сможет.

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