в первом посте тс поддерживаю)
почему же все делают роли, классы ACL и т.п., есть же старые добрые бинарные операции (битовые в PHP), 31 (63) превилегия достаточно для любого действия, стандартные битовые операции <<, >>, &, ~ достаточно для ВСЕХ вариаций.
Для хранения информации о правах пользователей достаточно обычное unsigned int (longint) поле.
Если гововорить о форуме (самое большое на мой взгяд разделение прав).
Использую схему битовых операций и правильную ООП архитектуру: root->forums->forum->threads->thread->posts->post
Есть констатны типа
const READ = 0x01;
const WRITE = 0x01 << 1;
const LOCK = 0x01 << 2;
const STICK = 0x01 << 3;
const VOTE = 0x01 << 4;
и пожалуйста, получаете:
A) Глобальные права (админ)
Модертор:
Б) Права на отдельный форум (например, для юзера можно хранить в БД права доступа к разным формам), т.к., юзер заходит в определенный тред
В) Права доступа на темы (глобальные темы) отдельные темы
Г) Можно организовать и права и на определенные сообщения.
В случае опять же правильного ООП, в памяти веб приложения будет храниться максимум 2 атрибута - глобальные права, и текущие права пользователя (в зависимости от того, где он сейчас).
4 байта в бд для одного разграничения прав, это того стоит, скорость бинарных операций естественно большая (1 такт CPU).
В топку все ваши getRole и т.п. ))
почему же все делают роли, классы ACL и т.п., есть же старые добрые бинарные операции (битовые в PHP), 31 (63) превилегия достаточно для любого действия, стандартные битовые операции <<, >>, &, ~ достаточно для ВСЕХ вариаций.
Для хранения информации о правах пользователей достаточно обычное unsigned int (longint) поле.
Если гововорить о форуме (самое большое на мой взгяд разделение прав).
Использую схему битовых операций и правильную ООП архитектуру: root->forums->forum->threads->thread->posts->post
Есть констатны типа
const READ = 0x01;
const WRITE = 0x01 << 1;
const LOCK = 0x01 << 2;
const STICK = 0x01 << 3;
const VOTE = 0x01 << 4;
и пожалуйста, получаете:
A) Глобальные права (админ)
Модертор:
Б) Права на отдельный форум (например, для юзера можно хранить в БД права доступа к разным формам), т.к., юзер заходит в определенный тред
В) Права доступа на темы (глобальные темы) отдельные темы
Г) Можно организовать и права и на определенные сообщения.
В случае опять же правильного ООП, в памяти веб приложения будет храниться максимум 2 атрибута - глобальные права, и текущие права пользователя (в зависимости от того, где он сейчас).
4 байта в бд для одного разграничения прав, это того стоит, скорость бинарных операций естественно большая (1 такт CPU).
В топку все ваши getRole и т.п. ))