kv75
18:43 13-11-2006 Система
Взбрело мне, стало быть, в голову написать трёхуровневую веб-систему на PHP+MySQL (некоторые уже знают, о чём я).

Под трёхуровневой я понимаю систему наподобие форума: имеется администраторская часть (редактирование набора полей и администрирование пользователей), пользовательская часть (редактирование пользовательских данных) и общедоступная часть (просмотры этих самых пользовательских данных и поиски по ним). Вот только никаких тем и сообщений не будет.

А поскольку ничего такого многоуровнего я раньше не писал, вот и думаю: то ли писать с нуля, то ли взять движок какого-нибудь форума и переделать под свои нужды. И если движок форума, то какого...

Советы приветствуются.
Комментарии:
Вук Мрнявчевич
20:50 13-11-2006
Из форумных движков я лазил только в код phpBB. Я думаю, можно его переделать, но только практически с нуля. Разве что оставить абстракцию БД, да и то, толку-то с нее.
А абстракция данных там такая, что для того, о чем ты думаешь, она не очень годится.
kv75
22:41 13-11-2006
Вук Мрнявчевич
Меня, честно говоря, больше всякие общие вопросы волнуют. Запросы-то я уж сам как-нибудь организую, а вот всякие авторизации и т.п. (даже дизайн) писать лень.
Гость
23:57 13-11-2006
1. Если дело горит, то однозначно бери готовый. FUD Forum я тебе уже советовал. VBulletin платный, но зато может очень много.

2. Попрактиковаться никогда не мешает и писать что-то свое имхо очень даже разумно. В данном случае -- если время не жмет.

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

Банальщина началась ====

Когда говорят о трех-уровневой (3-tier) системе имеют обычно в виду связку MVC (Model-View-Controller).

1. Model -- это то, что работает с данными, иногда просто данные (БД), а чаще -- объекты, которыми оперирует бизнеслогика.
2. View -- представление, -- то, что занимается выводом и отображением -- шаблонный движок, еще какая-то логика отображения. Вариаций реализации -- масса, от примитивного шаблонизатора, до умного слоя, который усеет в ьодель сходить, если данные нужны. Вот только модель никогда не должна ходить к объектам View
3. Controller -- диспетчер по сути. Принимает входные данные, решает какие объекты модели загрузить, выполняет какие-то действия, потом передает управление во view

В промышленном случае эти может быть монстр на трех машинах -- Оракл(Модель), Сервер приложений, где живет написанный на Джаве персистенс слой -- объекты уже загруженные и не умирающие вместе с сессией -- Это Контроллер, и Представление -- какой-нибудб легкий вем сервер, обращающийся к серверу приложений. Но это не для нас.

Мы работаем на одном сервере безо всяких долгоживущих объектов. Поэтому и строим MVC исходя из этого. Кроме того неплохо представлять, как работает Синглтон-Реджистри паттерн -- этим ты избежишь мешанины в глобальных переменных.

Лучше об этом прочитать в книжке все же перед тем как делать

Где читать?
Про синглтон-реджистри лучшая статья:
http://www.phppatterns.com/docs/design/the_registry

Про MVC
http://www.phppatterns.com/docs/des...troller_pattern

В общем достаточно наверное. Потому, что если я начну говорить дальше, то ты вместо того, чтобы писать пойдешь читать книжки. Это правильный ход, но в нем увязаешь на месяц где-то. Когда захочешь увязнуть скажи :)

Также я очень рекомендую посмотреть вот это (под пхп5 правда):
http://www.symfony-project.com/

Либо воспользоваться, либо заимствовать идеи. Но сам проект изумительно хорош. В лучших традициях лучших практик :)

Банальщина закончилась ====

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

Мрачная Борода.
Гость
00:13 14-11-2006
Добавление.
1. про MVC еще один хороший тред тут:
http://www.sitepoint.com/forums/showthread.php?t=184548

2. настоятельно рекомендую воспользоваться simfony -- гораздо правильнее, чем выдирать кусок из форума.
там есть и видео ролики и документация и тюториал -- приложение за сколько-то там уроков.

Мрачная Борода
kv75
10:38 14-11-2006
Гость
1. Дело не горит, поскольку это более-менее для себя. По крайней мере, не за деньги. Но как только кончится один из отпусков, времени на это может не остаться.

2. Огромное спасибо за ссылки и за symfony. Собственно, что-то вроде этой symfony мне и хотелось найти.

Ну упомянутые тобой три уровня – это классика, и не только для веб-приложений. Правда, я привык к несколько другим их названиям (и вообще с огромным опозданием усваиваю терминологию), но смысл по большому счёту от этого не меняется. Ну а если пишется небольшое приложение, физически не разнесенное по серверам, то такое разделение, как правило, в коде производится уже непроизвольно. Хотя, конечно, есть исключения.
Гость
10:59 14-11-2006
Даже для простейшей админки жутко удобно разложить все по MVC. В Symfony это сделано отлично. Плюс там есть еще ORM что тоже когда-нибудь пригодится
Гость
11:00 14-11-2006
Анонс :)

Про книжки я напиушу у себя в журнале -- что-то вроде "книги прочитанные за год".
Думаю будет интересно -- у меня лучший книжный год выдался за последнее время :)

Барада (мрачная)
kv75
12:06 14-11-2006
Гость
Буду ждать записи. :)
Скачал себе симфонию, распечатал документацию... Вот и думай теперь, то ли Дворецкого читать, то ли эти 300 страниц...