Codeigniter: как развернуть функции для контролируемых (бета) групп пользователей?
объяснение
Я работаю над созданием веб-приложения в CodeIgniter. Поскольку я постоянно добавляю новые функции, некоторые из них могут быть нестабильными. Поэтому я хотел бы иметь способ "разворачивать" эти функции в первую очередь для указанных групп. Если все пойдет хорошо, я сделаю эту функцию доступной для всего сообщества пользователей.
Решение, о котором я сейчас думаю, состоит из файла конфигурации, в котором есть массивы функций для каждой группы релизов:
alpha = array(
"feature A" => true,
"feature B" => true,
"feature C" => true
);
beta = array(
"feature A" => true,
"feature B" => true,
"feature C" => false
);
production = array(
"feature A" => false,
"feature B" => false,
"feature C" => false
);
Пользователи в моем приложении затем делятся на группы (альфа, бета, производственные), и система делает доступные функции доступными для текущего пользователя.
Эта часть "сделать доступной соответствующую функцию" теперь я думаю о том, чтобы сделать (некрасивую) конструкцию следующим образом:
if ($feature_array["feature A"])
{
/* run the code for feature A */
}
Тем не менее, эта конструкция заключается в том, что если функция распространяется на всех пользователей, то этот код больше не нужен, но все равно будет работать.
Мой вопрос
Существует ли решение / стандартная настройка / библиотека для такого рода функций, и мне не нужно возвращаться и удалять эти "операторы if", когда функция полностью развернута?
2 ответа
Я лично смотрю на разработку системы аутентификации на основе ролей
не уверен, что они уже есть, но, по сути, вы бы использовали таблицу с ролями, назначив каждому участнику определенную роль (или уровень пользователя, если вы предпочитаете)
тогда вы можете просто добавить соответствующие функции в свою бизнес-логику в свой контроллер / модель.
Как только функция проходит этап бета-тестирования, вы можете просто обновить роли для каждой из них, чтобы у них был доступ.
(Это довольно много работы с нуля, чтобы сделать это правильно, но в зависимости от того, насколько расширяемый вы хотите, это может стоить сделать).
Вы также можете рассмотреть ACL - CI имеет несколько существующих решений.