|
Slashdot? На PHP - халява! Никита "Nikitos" Кислицин Xakep, номер #051, стр. 051-086-2 index.php - главная страница сайта, скрипт для вывода статей, поиска по ним и т.д. admin.php - административный скрипт. config.php - скрипт конфигурации. kernel.inc.php - ядро системы, файл, в котором хранятся все небазовые узкоспециализированные функции, написанные ранее программистом для использования в системе. Это очень эффективное и красивое решение. Во-первых, отпадает нужда многократно выписывать одни и те же куски кода - один раз описал функцию и все, юзай на здоровье. Во-вторых, следуя этому приему, ты создаешь красивые многоуровневые, хорошо масштабируемые приложения, легкие в отладке и дальнейшей модернизации. Внимательный читатель и просто дальновидный человек без особых проблем найдет еще не один десяток преимуществ такого подхода, мы же перейдем к описанию функций, используемых в создаваемом нами новостном движке. connect(dbname) - возвращает указатель на активное соединение с БД dbname. get_author_info_by_aid(aid) - позволяет получить информацию об авторе статьи по его универсальному идентификатору (aid). Он возвращает ассоциативный массив, ключами которого являются имена соответствующих полей таблицы. showposts([category], [start], [howmuch]) - принимает три необязательных параметра. Первый указывает на раздел сайта, откуда выбираются статьи. Второй и третий параметры позволяют показывать определенное количество статей (сколько именно – указывает параметр howmuch), начиная со статьи, указанной параметром start. Для всех параметров предусмотрены значения по умолчанию. showpost(pid) - показывает статью, производя выборку из БД по ее уникальному идентификатору pid. showcomments(pid) - выводит комментарии пользователей к статье pid. addcommentform(pid) - выводит форму для добавления комментария. addcomment(aname, aemail, comment, pid) - добавляет комментарий к статье pid. Все параметры являются обязательными. navigation - выводит навигационную строчку. auth - выводит форму для аутентификации автора. athinfo(login) - возвращает ассоциативный массив с информацией об авторе. isadmin(login,passwd) - проверяет, есть ли в БД автор с такой комбинацией login/pass. iseditor(aid, cid) - проверяет, указан ли автор с идентификатором aid в качестве редактора раздела cid. Аналогичным образом определяются остальные блоки. При этом желательно соблюдать согласованность функций, т.е. все они должны работать на одном логическом уровне, и результаты работы одних будут входными параметрами для других. Все блоки принято сохранять в файле с расширением .inc.php, хотя, на самом деле, это абсолютно неважно. Важно лишь, чтобы вебсервер не позволял клиентам просматривать содержимое этого файла. Но с другой стороны, надо же как-то отличать выполняемый скрипт, обрабатывающий данные и генерирующий выходной поток, от модульного файла, в котором содержатся лишь блоки кода. Итак, есть файл, в котором описан ряд высокоуровневых функций. Для того чтобы их можно было использовать в остальных скриптах, этот файл необходимо подключить к сценарию при помощи функции require(filename). После этого в сценарии доступны все описанные функции. Т.е. для того, чтобы, скажем, вывести пользователю последние 10 статей достаточно набрать: |