matperez: matperez: я еще только начал изучать тестирование, может я чего то не понимаю, но...
$this->user->shouldReceive('privateMessageIsDisable')->andReturn(false); это статическая заглушка, для разных поведений, нужные разные заглушки.
А если параметров много? Получится что-то типа
Это не относится к проблеме, просто заметка. Вы привязываете логику к ActiveQuery, в отличие от вашего способа. Мой Manager хранит не только логику запросов, но и создание объекта. Плюс, на этапе оптимизации, ActiveQuery можно заменить на Command, используя чистый SQL.
Дмитрий Петрик: почитайте на досуге про регулярные выражения, вам явно не помешает...
Код рабочий. А регулярка вычисляет 4 положения тега: одиночный, в начале, середине и в конце списка
Сергей Илларионов: я не претендуют на звание гуру. Своё виденье я расписал в ответе.
А вообще есть кучу развёрнутых статей на тему MVC. Из недавнего на хабре habrahabr.ru/post/251361
Я, например, выделяют ещё один слой:
LoginForm, RegisterForm итд extends Model - логика валидации и специфичная логика формы
User implements IdentityInterface - вся логика, связанная с пользователем
UserRecord extends ActiveRecord - модель таблицы, не трогаю
Модель должна хранить всю логику относящуюся к сущности. Таким образом исключается дублирование.
У вас же логика разнесена по разным контроллерам и конечно не исключено дублирование.
А вы думаете своим решением не будете дублировать код? Добавляя еще одно валидируемое поле, вам придется в каждом экшене в setAttributesByNames прописывать это поле.
Написано
Войдите на сайт
Чтобы задать вопрос и получить на него квалифицированный ответ.