Ответы пользователя по тегу Проектирование программного обеспечения
  • Где хранить имя таблицы?

    Хранить имя таблицы в статичном методе, например:
    class ArticlesModel 
    {
        public static function tableName()
        {
            retrun 'articles';
        }
    }

    Но в последнем случае непонятно как разобраться с ситуацией когда есть второстепенные таблицы. Например у статьи есть теги, соответственно есть AtriclesModel и TagModel но есть ещё промежуточная таблица, реализующая их связь и у неё нет своего класса...

    Для промежуточной таблицы создать класс, аналогичный AtriclesModel и TagModel
    Ответ написан
  • Нужны ли группы для ролей у рользователей?

    Лучше заложить изначально такую возможность, можно посмотреть в сторону RBAC.
    На мой взгляд это User->RoleGroups->Roles не совсем удачная реализация.
    Лучше сделать что-то вроде User->Role->Permission, т.е.:
    User - пользователь
    Role - роль (администратор, модератор)
    Permission - уровень доступа (редактирование, удаление и т.д.).
    Но Role должны быть в иерархии, например администратор -> модератор -> пользователь -> гость, где:
    - Гость просмотр постов
    - Пользователь может создавать, редактировать свой пост
    - Модератор может создавать, редактировать все посты
    - Администратор может создавать, редактировать и удалять все посты
    Ответ написан
    Комментировать
  • Exception или новый валидатор?

    Эксепшен нужен в том случае, если работа программы не может быть продолжена. Например если нужно получить данные из БД, но соединение с БД не установлено. То в этом случае вызываем эксепшен, логируем ошибку и завершаем работу программы.
    Валидатор нужен для проверки данных, например входных данных, когда нужно заполнить какую-то форму, в которой есть обязательные поля. В этом случае достаточно вернуть массив/объект с ошибками, и завершить работу программы. Ошибки валидации не являются ошибками работы программы.
    Ответ написан
    4 комментария