Данная архитектура предоставляет преимущества модульной конструкции. Если администратор впоследствии решит, что надо изменить цвет шрифта на зеленый или использовать WML вместо XHTML, необходимые изменения в коде будут локализованы в одном звене, не оказывая воздействия на базу данных или бизнес-логику. Дополнительные сведения о многозвенной архитектуре есть в главе 15. Наше приложение мы начнем с описания звена данных.
Разработка схемы базы данных
Наша программа будет оперировать двумя основными типами сущностей: пользователями (users) и полномочиями (privileges). Поэтому в схеме должны быть таблицы для хранения данных о тех и других (табл. 26.1, 26.2):
В обычном приложении таблица с данными о пользователях может содержать гораздо больше полей, но, не зная специфики конечного приложения, мы постарались здесь упростить ее. Разработчики, реализующие данную систему пользовательских полномочий, могут при необходимости модифицировать таблицу User.
Помимо этих двух таблиц нужна таблица, которая объединит данные из них. Иными словами, это будет таблица, отражающая назначение полномочий пользователям. Назовем ее UserPrivilege (табл. 26.3):
Проектирование среднего звена
Среднее звено нашего приложения будет состоять из классов, упрощающих работу с системой разработчикам, и сценариев, которые позволят пользователям управлять полномочиями в приложении.
Доступ к базе данных
Для доступа к базе данных будет использован уровень абстракции базы данных, описанный в главе 17. Напомним, что его код находится в файле
DB.php.
Класс Privilege
У класса Privilege будут следующие свойства (табл. 26.4):
Класс User
У класса User будут следующие свойства (табл. 26.6):
Определение массива privileges в качестве свойства класса User позволяет отслеживать полномочия, предоставленные каждому пользователю, и обойтись без класса User Privilege.
В классе User будут содержаться следующие методы (табл. 26.7):
Логика приложения
Поддержку информации в таблицах Privilege и UserPrivilege осуществляют два сценария: privilege.php иuserprivilege.php. Разработчики, работающие с нашей системой, должны будут создать собственные сценарии для поддержки информации о пользователях, такой как их имена, способ связи и пароли.
privilege.php
Сценарий privilege, php отвечает за обработку действий с полномочиями, а именно обрабатывает запросы на создание, удаление и модификацию полномочий в системе. В него входят следующие функции (табл. 26.8):