В данный момент испытываю некоторою боль, в связи с тем, что больно уж устарел yii, пора перекатываться на yii2, но для этого придется перекопать все приложение. Ожидаю в скором ту же самую проблему по отношению к Ангуляру, т.к. второй вот-вот станет станет stable.
А если вдруг ваш фреймворк вообще умер, мир идет своим ходом, везде новые фичи, а чтобы их заюзать, нужно как-то встать раком, чтоб все норм стало.
Нормальная ли практика, абстрагироваться от фреймворка? Изолировать все обращения к нему в одном месте и в случае чего, изменить только данное место. По-моему это единственный верный путь, но пока не видел такого нигде и никогда.
Проблема в том что такая абстракция превратится в новый фреймворк, который будет явно лишним. Потом попробуйте его адаптировать к чему-то другому - утилизируете миллион часов. Если еще есть возможность переписать и необходимость, то лучше это делать прямо сейчас.
Ну почему же в новый фреймворк? Например все контроллеры и модели будут наследоваться от одного контроллера и модели, которые по сути будут лишь оберткой над уже существующим в фреймворке.
Как только юзается какой-то класс фреймворка - сразу же к нему пишется обертка. Фреймворк обновился, например изменилось название какого-то класса(актуально для Yii, CModel превратился в yii\base\Model), замену придется совершить в одном месте, а не в сотне моделей(а их в проекте уже за сотню наверно).
Лев Ртутин: В теории все так и есть. Но мы живем в практике :)
Проблема в том что новые фреймворки не только меняют название методов и классов. Что если изменится что-то более крупное? Вот тут, скорее всего, придется переписывать не только обертку, но и код за ней.
В общем, если вам хочется реализовать обертку и вы знаете что проект не придется поддерживать (в плане функционала), то можно и написать, но я бы не советовал, не оправдано.
Лев Ртутин: Кто мешает пройтись автозаменой, да будут ошибки, но их будет не много и их проще решить. Если не использовать методы framework-а по полной - то зачем он вообще нужен? Зачем тогда переходить? Допишите к yii1 все что надо и все.
С точки зрения теории - это имеет смысл и некоторые шаблоны проектирования решают именно эту задачу.
Но на практике эти затраты, скорее всего, не отобьются: дешевле переписать всё заново раз в три года (там и инсайты какие-то появятся и технический долг можно будет уменьшить), чем огораживаться от фреймворка таким образом.
Не вижу смысла настолько абстрагироваться ибо вся бизнес-логика хранится в доменных моделях и использует репозиторий для персистентности. Как следствие, при переезде на новый фреймворк доменные модели можно прямо копипастить (иногда даже вместе с юнит-тестами впридачу) – а именно тут и закопана как раз основная работа приложения.
Конечно, придётся переписать не связанные с бизнесом куски типа роутинга/контроллеров/чего-то-ещё на новые – но ведь ради этих более новых и более удобных кусков и затевается обычно весь переезд.
Пишу только исходя из личной практики и того что видел.
То бишь, сначала следует составить максимально подробное описание – ради чего переезд и какой профит он даст кроме ощущения, что "мы пишем на чём-то новом".
В небольших проектах я наоборот часто сильно завязываюсь на фрейморк (кроме доменных моделей, которые суть POPO) – это позволяет использовать его преимущества на 146% – гораздо эффективнее, чем пилить "свой фреймворк для абстракции над фреймворком".