Аргерих Л. О языке РНР. Часть 5. Страница 129


Данная архитектура предоставляет преимущества модульной конструкции. Если администратор впоследствии решит, что надо изменить цвет шрифта на зеленый или использовать 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):