![]() |
![]() |
| http://kurepin.ru/php/slang.ru/7/ |
|
Строим сайт Глава 7. Планирование-5: class_utils Давайте теперь подумаем над внутренними утилитами, для которых мы забронировали место в class_utils. Убежден, что в процессе программирования сайта у нас накопится вагон и мелких утилит, упрощающих жизнь, а поэтому пока остановимся на самых важных из них: журнал операций, обработка ошибок и контроль доступа. Любая уважающая себя система, будь то ОС UNIX или кассовый аппарат в супермаркете, в том или ином виде ведет журнал операций. Это полезно по многим причинам, перечислять которые, я надеюсь, не требуется. Мы тоже будем вести журнал пользовательских операций - все ходы должны быть записаны! Есть несколько подходов к реализации журнала операций. Я предпочитаю вариант, когда записи ведутся специальной функцией, вызываемой из любого места программы по желанию программиста. Функцию назовем log_insert(); Как это работает. В подходящий момент из любого места программы вызывается функция log_insert() с необходимыми параметрами. В качестве обязательного параметра в log_insert() передается номер выполненной операции. Чаще всего остальные параметры функция может вычислить сама, чтобы потом записать все в журнал. Журналом могут выступать таблицы базы данных или текстовые файлы. Лично я предпочитаю таблицы базы данных. Какие данные имеет смысл загружать в базу и как при этом избежать перегрузки системы большим количеством slq-insert'ов - расскажу, когда будем писать саму процедуру. Сейчас же просто забронируем функцию в class_utils: highlight_string(' // журнал операций function log_insert() { } ?>');?> Другую важную функцию в любой нормальной системе выполняет служба обработки ошибок. В случае возникновения какой-либо ошибки такая служба должна как минимум сообщить о произошедшем пользователю. Дополнительно может быть произведена запись параметров ошибки в журнал регистрации ошибок и отправлено соответствующее уведомление администратору сервера. К сожалению, обработка исключительных ситуаций на уровне PHP-движка была реализована только в PHP 5-ой версии, поэтому контроль за правильным выполнением программы будем реализовывать своими силами.
highlight_string(' // обработчик ошибок function err_report() { } ?>');?> Расшифровку кодов ошибок можно хранить в базе данных или в простом текстовом файле, что я и рекомендую сделать. Пусть он лежит в папке /info и называется errors.txt. А формат записи файла прост: nn\tтекст ошибки nn\tтекст ошибки nn\tтекст ошибки Где nn - номер ошибки, а "\t" - знак табуляции - разделитель данных. Каждая ошибка записывается с новой строки. Все строки, начинающиеся не с цифры, - игнорируются обработчиком. Ну и последнее в этой главе - контроль доступа. Алгоритм работы такой функции почти всегда одинаков для всех систем: в функцию передаются регистрационные данные с идентификатором операции, которую пользователь желает произвести, а в ответ возвращается разрешение или запрет на проведение данной операции. В нашем случае, как я представляю, будем передавать регистрационные данные пользователя, идентификатор словаря и тип производимой операции. В ответ мы получим разрешение или отказ на проведение операции. Но это все потом. Пока идет планирование, мы просто резервируем для себя эту функцию в классе class_utils: highlight_string(' // контроль доступа function user_access() { } ?>');?> Двинулись дальше? 06.08.04 |
| реклама на сайте |
|
…
|
| copyright ©2000-2002 Ruslan Kurepin |