PHP: разрабатываем свой xForum

Никита "Nikitos" Кислицин

Xakep, номер #050, стр. 050-086-1


(nikitoz@real.xakep.ru)

http://nikitos.inc.ru

Я много думал, прежде чем приступить к написанию этого материала. Уже вышли два номера. Можно и нужно подвести какой-то итог: ты уже знаком с базовыми функциями, освоил основные приемы программирования на PHP, умеешь писать приложения для взаимодействия с базами данных. Теперь мы напишем web-форум с упором на функциональность кода :).

О быстроте кода

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

Существует множество концепций разработки PHP-приложений. Можно запереться в комнате на вечер, взять с собой кофеварку, запустить ноутпад и наколбасить на одном дыхании смесь хтмл-тегов и PHP-кода. Такой метод, к сожалению, свойствен абсолютному большинству PHP-кодеров. Стоит ли говорить, что трезвому человеку разобраться в таких приложениях практически невозможно. Порой даже сам разработчик путается, где и что. Не помогают даже подробные комментарии, которые, кстати, расставляют далеко не все.

Мы же напишем форум, исходя из несколько иной концепции программирования - использования высокоуровневых узкопрофильных функций, определяемых нами же непосредственно перед обращением к ним. Следует заметить, что ряд функций в PHP представляют собой реализацию именно такого подхода. Так, например, SQL-функции уже описаны в спецификации транслятора, в то время как базируются на более низкоуровневых сетевых функциях и стандартных выражениях.

What is this shit?

Сейчас существуют десятки бесплатных и очень функциональных скриптов, открывающих широкие возможности по построению динамических форумов. Очевидно, что в рамках статьи невозможно обсудить все те примочки, которые они используют (javascript'ы, чужие классы и т.д.). Разумеется, написанный мною в образовательных целях форум предоставляет менее широкие возможности, однако не стоит забывать о целях, которые преследует эта рубрика. Форум позволит пользователям, не регистрируясь (обязательная регистрация в форумах, имхо - вверх маразма), (неправда :), я на своем форуме делал регистрацию, так как это отсеивает нежелательных пользователей - прим. ред.) создавать новые темы и отвечать на уже созданные. При помощи административного интерфейса форума можно будет удалять и любым образом модифицировать сообщения.

Technical equipment

Все сообщения будут храниться в базе данных mySQL. До написания скриптов следует продумать структуру используемых таблиц. Первая носит имя "xforum". В ней хранится информация обо всех открытых дискуссиях. "xforum" имеет следующие поля: pid int not null auto_increment primary key, post text, author_name varchar(50), author_email varchar(50), date date, time varchar(20), ip varchar(30). Назначение каждого из полей, думается, очевидно, из их названий. Поясню лишь, что pid расшифровывается как: post id.

Содержание  Вперед на стр. 050-086-2