Как делать сайт по модульной системе на php?

Статус
В этой теме нельзя размещать новые ответы.
admLoki, пусть пробуют - всё-таки опыт и не самый плохой.
Разберуться с модулями, поймут что не так уж они и хороши :D
Да, пусть. Потом нас заменят, то-же самое говорить будут :) .
 
А в чем минусы модулей? Объясните? Сам вижу единственный минус в том, что если на сайте будет дырка, то можно модуль свой запихнуть и он автоматом подключится. Однако, если есть дырка, то и так можно с сайтом сделать все что угодно.
Больше минусов не вижу.
 
Не вижу минусов. Модульный подход более удобен. Просто есть несколько подходов создания сайтов.

Самое простое (с чего, как правило начинаются всякого рода страницы) - сделать такой сайт:
PHP:
<?
include('header.php');
$page=isset($_GET['page'])?($_GET['page']):"main";
include($page.".php");
include('footer.php');
?>
Где header.php - шапка, footer.php - жопа, а main.php - главная страница.
Остальные страницы оформляются в виде любых файлов, например about.php и вызываются примерно так:
Код:
http://host/?page=about

Недостатки метода налицо:
1) Слишком опасный код. Даже если учесть много всяких "если".
2) Неудобно менять дизайн, если логика не соответствует логике "<бошка><контент><жопа>".
3) код почти неминуемо смешивается с вёрсткой.

Лучше всего воспользоваться готовым фреймворком или написать свой.
Работает стандартный (на сегодняшний день) фреймворк примерно так:

- .htaccess направляет URI запросы на ядро
- ядро подгружается со всеми необходимыми обработчиками и базовыми модулями
- парсер запросов обрабатывает URI, выясняя какому модулю отдать обработку
- подгружается нужный модуль
- формируется результат работы модуля
- всё это отдаётся в браузер

Эта красота, конечно, чуть более ресурсоёмка, но абсолютно логична, последовательна, и практически совершенна. Ядро может вести логи разного уровня детализированности, обрабатывать ошибки, ЧПУ, проверять переменные в GET, POST, COOKIES, и множество чего ещё.

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

Прелесть здесь в том, что модуль обращается к БД, данным об авторизованном пользователе, различным переменным и константам, которые уже были объявлены и выданы модулю. И сам модуль получается гораздо короче и нагляднее.
Таким образом, программировать новые функции становится удобно даже через год.
А если что-к-чему ещё и описано, то дополнять / переписывать код сможет при желании совершенно другой человек.

Так что если вы планируете кодить с перспективами на развитие, удобство и расширение - используйте фреймворки и модульный подход.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху