- PVSM.RU - https://www.pvsm.ru -
В этой статье речь пойдет о разработке приложений на Yii2. А именно, как в самом начале своего пути без определенного опыта легко поддаться на искушения и свернуть на дорогу, которая ведет прямо в АД. Далее под словом АД предполагается ситуация в которой вы понимаете, что сопровождать ваш код становится все сложнее.
Предложенная информация может быть полезна начинающим и средним разработчикам, профессионалы могут счесть ее жалобой, что вполне может оказаться правдой.
Небольшая предыстория
Года три назад я познакомился с отличным инструментом под названием Yii2 и стал тесно с ним работать. Вначале для обучения новым фитчам php5.3 и php.5.4 ну и в дальнейшем для реализации всех своих проектов. Тогда еще у меня были очень большие проблемы с архитектурой, хотя должен признать, что сейчас они тоже есть, но не в таких масштабах. Поэтому, когда я натыкался на множество ошибок, я не придавал им значений, а когда проект вырос, было уже поздно.
Итак приступим.
Yii — это высокоэффективный основанный на компонентной структуре PHP-фреймворк для разработки масштабных веб-приложений.
— Действительно ли это утверждение, которое пишут разработчики на русскоязычном сайте Yii2 правдиво?
— Действительно ли на Yii2 можно написать проект любой сложности?
На эти вопросы ответ однозначно Да. Да, но с небольшим таким условием, если Вы или человек из вашей команды является отличным архитектором приложений или очень опытным программистом и контролирует каждого разработчика.
Yii2 в целом это хороший инструмент! В нем можно найти множество плюсов и конечно-же убедиться самому разрабатывая на Yii2. Однако для начинающего разработчика без определенного опыта разработка на Yii2 может выйти боком по перспективе роста проекта. В самом начале все здорово, все работает, хорошая документация, сильное сообщество, легко найти ответ на свой вопрос.
Однако ели у вас хороший проект, который постоянно развивается и появляется все больше функционала, однажды вы проснетесь и поймете, что вы в АДУ. И выбраться из него будет очень и очень сложно.
Процесс разработки приложения на Yii2
Установка Yii2 достаточна простая. С появлением composer установка почти любого инструмента простая. Единственное, что все портит это composer-asset-plugin, с ним у многих возникают проблемы. Кто-то забыл поставить, кто-то обновлялся и не сбросил кэш, в общем проблем и вопросов по этой теме много. Хотя я не буду записывать это в минус, просто скажу, что установка Yii2 достаточно простая.
Выбор шаблона приложения
Yii2 достаточно любезен, поэтому предлагает сразу несколько шаблонов для архитектуры. Классика, — это выбор между advanced и basic. Наверное каждый новичок видя первый раз Yii2, задумывался о вопросе какой-же шаблон выбрать?
Я делал несколько средних проектов на разных шаблонах и всегда натыкался на разные проблемы в каждом из них.
В общем чем больше проект разрастается тем больше дискомфорт, что от basic, что от advanced шаблонов. Эта проблема решаема, можно сделать свой шаблон, однако, чтобы прийти к такой идее нужно иметь хороший опыт, чтобы понимать все минусы и плюсы. Скажем обычный разработчик не будет об этом задумываться в самом начале разработки.
Примерно с этого момента мы уже взглянули (не ступили, а только посмотрели) на дорогу, которая ведет в АД.
Yii2 — современный mvc framework
Даже если предположить, что все, кто разрабатывает на Yii2 (хоть это далеко не так) следуют парадигме mvc, пишут тонкие контроллеры, жирные модели и не пишут логику в представлениях, работая с Yii2 вы все-равно уже в АДУ.
Дело в том, что разработчики самого Yii2, слишком дословно трактовали MVC при разработке инструмента. В результате модель получается таким божественным классом, который делает все. Модель обычно в лучших традициях унаследована от ActiveRecord, работает с формами, валидацией, содержит логику, реляции, еще одну логику, еще сценарии, и еще 10 логик на каждый сценарий и еще одну логику для логики логик.
Когда проект разрастается и у вас есть модель, которая скажем состоит из 5 сценариев, содержит очень много логики и еще в лучших традициях от нее зависит 80% всего вашего приложения. И тут появляется задача что-то изменить или добавить, а вы понимаете, что у вас не одна такая модель, а целых 10 и все они зависят между собой и чтобы что-то добавить нужно отрефакторить все это дело. Смотрите по сторонам, и видите дорогу с табличкой «Добро пожаловать в АД».
Пожалуй самая основная проблема Yii2 заключается именно в том, что почти все наследуют модели от ActiveRecord и реализуют в ней всю логику. Еще живут варианты, когда логика разнесена по контроллерам и представлениям.
Несколько примеров из жизни (или добро пожаловать в АД):
Разумеется все эти моменты приходятся непосредственно именно на разработчиков. Однако, когда я начинал, я даже и представить не мог, что через год у меня будет более 80 моделей с перекрученной логикой и кучей, просто огромной кучей условий, чтобы хоть как-то "'это" работало. Рефактроинг превращается в АД, потому, что рекурсия зависимостей делает свое дело. Если как-то отрефактроить одну модель, за этим следует рефакторинг почти половины проекта.
Пожалуй самые главные минусы Yii2, которые в свое время мне подпортили жизнь
Естественно профессиональные программисты легко обходят все эти минусы, так как на опыте понимают чего ждать. К сожалению я в свое время допустил много ошибок архитектуры и в будущем мне это вышло очень большим боком.
Поэтому старайтесь не повторять таких ошибок и не начинать свое обучение на Yii2.
Несколько советов для тех, кто работает с Yii2
Еще в качестве дополнения я хочу ответить на некоторые популярные вопросы:
Какой framework выбрать новичку?
Профессиональный разработчик может выбрать абсолютно любой инструмент для разработки проекта. Что касается новичка, я бы рекомендовал брать Symfony 3. Просто поверьте на слово. Да будет тяжело, да будет желание уйти, да будут жалобы. Нужно перетерпеть и просто сидеть на Symfony 3. И так до тех пор пока вы не разберетесь с архитектурой и не получите хорошие знания «как это работает». После этого вы сможете избежать многих ошибок в Yii2.
Подходит ли Yii2 для больших проектов ?
Да. Yii2, как и любой другой современный инструмент подходит для любого проекта, но обязательным условием должно быть то, что вы или представители вашей команды хорошие инженеры. Иначе, когда проект разрастется вы проснетесь в АДУ.
Symfony2 vs Yii2, что круче ?
Раньше я всегда двумя руками защищал Yii2 и грешил, что Symfony2 медленная, жирная, в ней много чего не нужного и тп. Обращаюсь ко всем симфонистам: Ребята простите, я никогда так не ошибался.
Что касается ответа на этот вопрос, как говорил Александр Макаров на одной из конференций: «Yii2, это другая ниша».
Сравнивая Symfony2 (или 3) с Yii2, это наверно как сравнивать велосипед с автомобилем.
В теории на велосипеде тоже можно проехать 500 км., однако будьте готовы запастись клеем и заплатками.
И при этом тем не менее многие бы сейчас с удовольствием расслабились и покатались на велосипеде.
Данная статья не в коем случае не утверждает, что Yii2 плохой инструмент. Скорее статья предупреждает, что разрабатывая на Yii2 нужно быть предельно аккуратным и продумывать каждый шаг, так как framework просто манит вас свернуть не туда.
Далее, если тема кому-то интересна, то в следующей статье я попробую рассказать о том, как можно встать на путь истинный и более-менее красиво работать с моделями в стиле Yii2.
Автор: nepster09
Источник [1]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/php-2/107828
Ссылки в тексте:
[1] Источник: http://habrahabr.ru/post/273615/
Нажмите здесь для печати.