А это клавиатура, с помощью которой я творю...
http://kurepin.ru/php/slang.ru/7/
Rambler's Top100
Строим сайт slang.ru, глава 7

Строим сайт slang.ru

Глава 7. Планирование-5: class_utils


Давайте теперь подумаем над внутренними утилитами, для которых мы забронировали место в class_utils.

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

Любая уважающая себя система, будь то ОС UNIX или кассовый аппарат в супермаркете, в том или ином виде ведет журнал операций. Это полезно по многим причинам, перечислять которые, я надеюсь, не требуется.

Мы тоже будем вести журнал пользовательских операций - все ходы должны быть записаны!

Есть несколько подходов к реализации журнала операций. Я предпочитаю вариант, когда записи ведутся специальной функцией, вызываемой из любого места программы по желанию программиста. Функцию назовем log_insert();

Как это работает. В подходящий момент из любого места программы вызывается функция log_insert() с необходимыми параметрами. В качестве обязательного параметра в log_insert() передается номер выполненной операции. Чаще всего остальные параметры функция может вычислить сама, чтобы потом записать все в журнал. Журналом могут выступать таблицы базы данных или текстовые файлы. Лично я предпочитаю таблицы базы данных. Какие данные имеет смысл загружать в базу и как при этом избежать перегрузки системы большим количеством slq-insert'ов - расскажу, когда будем писать саму процедуру.

Сейчас же просто забронируем функцию в class_utils:

<?  // журнал операций   function log_insert()   {   } ?>

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

На момент написания книги ни один из уважаемых хостинг-провайдеров еще не предоставляет в промышленных объемах php 5-ой версии, а пользоваться услугами мелких кустарей-хостеров я очень не рекомендую!
Бронируем функцию - обработчик ошибок:

<?  // обработчик ошибок   function err_report()   {   } ?>

Расшифровку кодов ошибок можно хранить в базе данных или в простом текстовом файле, что я и рекомендую сделать. Пусть он лежит в папке /info и называется errors.txt. А формат записи файла прост:

nn\tтекст ошибки
nn\tтекст ошибки
nn\tтекст ошибки

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

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

<?  // контроль доступа   function user_access()   {   } ?>

Двинулись дальше?





[шаг назад] [печатать] [в начало сайта]



copyright ©2000-2017 Ruslan Kurepin