PunBB + PE

это не просто форум

14.12.2009 08:17:49 #1: artoodetoo ↓ 

Administrator
MArt Keepers
bmw-club
Откуда: Россия
Здесь с: 14.03.2007
Сообщений: 715
Вебсайт

Что дальше

Я пришел к выводу, что PE как "портал на базе PunBB|FluxBB" должен начинаться с продуманной концепции. Тогда вопросы совместимости и сопровождения будет проще решать. И "клуб фанатов" должен появиться smile

PE будет выглядеть как набор How-To:
- как сделать несколько форумов с единой авторизацией
- как настроить "статическую" страницу из нескольких блоков
- как добавить галерею
- как сделать личные сообщения с поддержкой тем и поиском
- как добавить поисковые теги
- как прицепить другой парсер (html, markdown…)
- как настроить права доступа
- как реализовать свою схему ЧПУ

В январе я переведу существующий сайт в архив, а новый сайт будет на новом движке.

Неактивен

 

20.12.2009 10:02:13 #2: artoodetoo ↓ 

Administrator
MArt Keepers
bmw-club
Откуда: Россия
Здесь с: 14.03.2007
Сообщений: 715
Вебсайт

Re: Что дальше

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

Стартовая точка — движок форума FluxBB v1.4. Это очень простой и надежный форум без излишеств.

Характеристика улучшаемой системы:
Изначально проектировался как "движок, который каждый будет настраивать под себя", а не как готовое законченное решение. В нем нет механизма плагинов, все изменения предполагаются как "моды", т.е. инструкции по добавилению нового кода в существующий. Движок писался под PHP 4 и практически не содержит классов. (Одно исключение: класс базы данных — в зависимости от конфигурации порождается объект работы с БД MySql, Postgres или Sqlite) Как следствие, повсеместно используются глобальные переменные и константы. В то же время код выглядит аккуратным написанном в едином coding standard и он неплохо справляется со своей задачей. Форум быстрый и умеет почти все, что требуется от форума: поддерживает многоязычность интерфейса, имеет встроенный поиск и управление правами групп, есть кеширование. В зачаточном состоянии есть шаблоны вывода. За годы существования накоплено большое количество модов.

Цели улучшения:
Сделать ядро движка более приспособленным для будущего расширения. Моды должны успупить место плагинам (хуки, события). Глобальных переменных быть не должно. Вывод страницы надо выделить из основного кода в отдельные модули представления. Можно сказать, что улучшение — это внедрение ООП в старый код.

Прогресс:
1. Волшебная таблетка: "суперкласс" конфигурации приложения. Вместо глобальных переменных и констант будет обращение к кнфигурации. Когда нужно подключить дополнительный класс это сделает автозагрузчик класса. Когда нужно получить общую переменную или объект мы будем получать его через метод суперкласса. Из кода должны исчезнуть операторы include|reqire и global и некоторое количество проверок. Вместо:

Код:

global $db, $lang_forum;

будет

Код:

$db = Qb::loadDb();
$lang_forum = Qb::loadTranslation('forum');

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

2. Для большего контроля создадим перехватчик ошибок и протоколирование. Конструкции вида

Код:

$db->query("sql") or error("message")

уйдут. Вместо них при неудачном запросе возникнет исключение внутри самого query(), а глобальный перехватчик исключений выполнит запротоколирует ошибку.

3. Сейчас текст запросов к БД формируется путем склейки строки. Чтобы избежать SQL-injection применяется обращение к $qb->escape()

Код:

query('SELECT * FROM '.$db->prefix.'forums AS f WHERE f.id='.$db->escape($id))

Заменим эту технику на шаблон запроса с "плейсхолдерами":

Код:

query('SELECT * FROM :p_forums WHERE f.id=:id', $id)

.
Затем вместо явного написания SQL в теле модуля переходим к именованным запросам. Зависимость от диалекта SQL спрячем, как это делается для "языковых констант". Что-то вроде техники gettext().

Код:

query('Get forum', $id)

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

5. Вводим понятие "событие". На событие через конфигурацию можно навесить обработчик. Таким образом обходимся без модов.

6. Весь код, порождающий HTML выносим в модули представления. Постепенно переводим этот код на более удобные шаблоны.

Неактивен

 

01.01.2010 23:40:15 #3: RServer ↓ 

Опытный
Здесь с: 14.01.2008
Сообщений: 22
Вебсайт

Re: Что дальше

Господин разработчки.
А почему флюкс? Он же на 1.2 пунбб?
Когда сам пунбб уже на 1.3


FireFox

Неактивен

 

01.02.2010 20:07:13 #4: niikto ↓ 

Administrator
MArt Keepers
bmw-club
jaga-jaga
Откуда: Омск
Здесь с: 25.03.2007
Сообщений: 177
Вебсайт

Re: Что дальше

RServer    о, это философский вопрос, а вообще то artoodetoo выше уже ответил на него.

Неактивен

 

Board footer

Powered by PunBB + PE

Valid XHTML Valid CSS

[ Generated in 0.018 seconds, 10 queries executed ]