Переход с Yii 1.1 на Yii 2.0

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
TM123
Сообщения: 608
Зарегистрирован: 2011.06.09, 11:18

Переход с Yii 1.1 на Yii 2.0

Сообщение TM123 »

Здравствуйте.

Возможно есть отдельная тема или сайт, но что-то ничего толкового в инете на тему не нашел. Буду благодарен если ткнете места где можно почитать. Могу сам на коленке сделать, но хочется сделать как по правильному, потому что уже отгребал проблем в последующем с тем что по первой версии не было толковой документации, а исправления ошибок не было возможности ждать и исправлял сам методом постановки костылей, т.к. на тот момент не всегда понимал принципы работы фреймворка.

Чтобы спамеры и просто тем кому делать нечего не писали всякий хлам типа зачем переходить, проще сразу на Yii 2, таким скажу, что есть проект на Yii1.1, живет почти 6 лет, имеет почти 8 метров кода и просто взять сделать на Yii 2 не канает, достаточно длительное время проекту жить на 2-ух фреймворках, что более востребованное будет переписываться, а все что используется редко будет оставаться по максимуму на Yii 1.1, либо будет вынесено в отдельный проект с собственной авторизацией.
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Переход с Yii 1.1 на Yii 2.0

Сообщение zelenin »

практически невозможно (за разумное время/деньги) для проекта в 8 мб перейти на yii2.
TM123
Сообщения: 608
Зарегистрирован: 2011.06.09, 11:18

Re: Переход с Yii 1.1 на Yii 2.0

Сообщение TM123 »

Вопрос стоит не в деньгах и времени, переход может занять 2-3 года, это нормально, возможно что-то останется на Yii 1.1 на всегда, но если не делать ничего, то возникают различные проблемы типа технологических - PHP перестает поддерживать версии, людей трудно искать, никто не хочет писать ни на старом фреймворке, ни на старых версиях PHP, а юные программисты пенсионного возраста, готовые писать на чем угодно такой проект поддерживать не могу, не говоря о развитии. В общем-то есть и личная заинтересованность, профессиональная состоятельность, если писать все время на старье, то как специалист начинаешь резко падать в цене.
Аватара пользователя
pgamaster
Сообщения: 39
Зарегистрирован: 2013.03.21, 14:20

Re: Переход с Yii 1.1 на Yii 2.0

Сообщение pgamaster »

А смысл? Проще поддерживать что есть, улучшая понемногу код.
PHP 7 дружит с yii, по крайней мере я не видел ошибок.
Тут скорее проблема подбора людей нежели фреймворка. Работает - не трогай.
Я бы еще понял что с нагрузками не справляется проект или еще какие-то фундаментальные проблемы.
Если программист не берется за старый проект то это хипстер а не программист и пусть идет делаеникому не нужные стартапы :lol:
Последний раз редактировалось pgamaster 2016.11.22, 18:39, всего редактировалось 2 раза.
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Переход с Yii 1.1 на Yii 2.0

Сообщение zelenin »

TM123 писал(а):Вопрос стоит не в деньгах и времени, переход может занять 2-3 года, это нормально, возможно что-то останется на Yii 1.1 на всегда, но если не делать ничего, то возникают различные проблемы типа технологических - PHP перестает поддерживать версии, людей трудно искать, никто не хочет писать ни на старом фреймворке, ни на старых версиях PHP, а юные программисты пенсионного возраста, готовые писать на чем угодно такой проект поддерживать не могу, не говоря о развитии. В общем-то есть и личная заинтересованность, профессиональная состоятельность, если писать все время на старье, то как специалист начинаешь резко падать в цене.
я не очень представляю сколько реально кода в 8 мб (в моем проекте их 65 без вендоров, миграций, шаблонов писем - и это тонна кода), но вкладывать больше полугода в переписывание на yii2 считаю крайне не рациональным, даже по причине профессионального роста. Причин много: yii2 2 с копейками года, концептуально yii2 не сильно отличается от yii1, развития это не даст, для развития программиста надо кругозор расширять, двигаясь в программирование в целом, а не в один фреймворк. А для проекта я бы посоветовал отвязываться от фреймворка, чтобы не зависеть от него, переписывая каждые 3-5 лет - это полезнее и для программистов и для проекта.
Если это не убеждает и кажется "спамом", то по миграции есть офицальная дока с различающимися в версиях компонентами, которая вам ничего не даст. Надо изучить yii2 самому, чтобы план миграции (и ее разумность) составить в голове.
Аватара пользователя
Йож
Сообщения: 574
Зарегистрирован: 2015.08.26, 03:05

Re: Переход с Yii 1.1 на Yii 2.0

Сообщение Йож »

Если Вы сами хотите переделывать на Yii 2, то потихоньку за пару лет сделаете, заодно и узкие места подправите..

А так согласен с zelenin по поводу перспектив.
TM123
Сообщения: 608
Зарегистрирован: 2011.06.09, 11:18

Re: Переход с Yii 1.1 на Yii 2.0

Сообщение TM123 »

Отвечаю всем
1. Проект по сути своей ERP автоматизирующая деятельность международного торгово-производственного холдинга с персоналом в районе 1200 человек. Задач выше крыши не смотря на то что проект старый и по моим оценкам автоматизировано в районе 40-50%, поэтому проблема стоит не в том чтобы улучшать код или увеличивать быстродействие, с кодом в целом все в порядке, он пишется изначально качественно, а если участники проекта пишут всякую фигню, такой код не принимается в эксплуатацию, с быстродействием тоже все в порядке. Есть конечно архитектурные проблемы, потому что 6 лет назад была поставлена задача на значительно меньший проект и приоритет был отдан скорости автоматизации, а не накручиванию бантиков, а теперь хозяин хочет и их, а в текущей архитектуре это затруднительно. Есть мнение, что применение Yii 2 увеличит скорость разработки на 20-30%, при этом позволит легко применять бантики. Yii 1.1 тупо банально практически не поддерживается и скоро будет снят с поддержки вообще, библиотеки для бантиков придется писать самостоятельно, так какой смысл их писать под старый фреймворк.
2. Про размер кода дальше не буду вдаваться, не хотел похвастаться, просто хотел сказать что проект большой и серьезный, с вендорами кода далеко за сотню метров - если кому интересно. Так же в проекте запрещено использование автогенераторы каментов, крайне затрудняет чтение кода размазывая код одного метода на несколько экранов, когда и так все понятно что он делает из его названия и передаваемых параметров.
3. Про программистов, да такая жизнь сейчас, молодняк не идет, потому что думает что чему-то научиться и интересно только в IT компаниях, здесь присутствующие судя по всему понимают толк в профессии и понимают что в реальность в большинстве IT компаний, но такие как мы на рынке труда оказываются редко, вот и остается просеивать молодняк в поисках алмазов, но если некого просеивать, то и никого не найдешь.
4. План миграции есть, отсюда и выходят те 2-3 года, нужны конкретные объяснения/советы как что делается в проекте который живет сразу на 2-ух версиях фреймворка, например, как передать пользователя залогиненного в Yii 1.1 в функционал на Yii 2 и обратно. Как писал выше, могу сам все это сделать на коленке, но хочется воспользоваться штатным функционалом если он есть, да и зачем тратить время на то чтобы создать что-то, что только сможет приблизится к идеальному решению, не думаю что команда разработчиков фреймворка не задумывалась над такими элементарными вопросами и не разработала идеальное решение с точки зрения знания обоих версий
5. Написание кода не зависимого от фреймворка - интересная идея, можете посоветовать что почитать на эту тему, возможно так и стоит поступить, но сначала наверное надо посмотреть что народ уже придумал, чтобы не набивать чужие шишки самостоятельно.
Аватара пользователя
Йож
Сообщения: 574
Зарегистрирован: 2015.08.26, 03:05

Re: Переход с Yii 1.1 на Yii 2.0

Сообщение Йож »

Есть информация от Samdark:
http://rmcreative.ru/blog/post/s-yii-1. ... ilozhenija

Судя по всему, лучше параллельно рефакторить проект под Yii2, чем изменять частично на продакшене. Просто часть функционала может быть недоступна во время кодинга.

А по поводу узких мест - имел ввиду не только быстродействие, но и всякие плюшки (бантики), всякие хелперы под себя, модули, виджеты и т.д.

Вот еще обсуждение (может быть, уже видели..)
viewtopic.php?t=18133
Последний раз редактировалось Йож 2016.11.22, 21:08, всего редактировалось 1 раз.
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Переход с Yii 1.1 на Yii 2.0

Сообщение zelenin »

4. 2-3 года - огромный срок, во время которого станет больнее от дублирования кода и появившихся багов, а итогом станет проект, переписанный на устаревший фреймворк (yii1 был выпущен в 2008 году, и уже к 2013 стало ясно что он безнадежно устарел)
5. https://habrahabr.ru/post/267125/ например и что-нибудь по ddd.
TM123
Сообщения: 608
Зарегистрирован: 2011.06.09, 11:18

Re: Переход с Yii 1.1 на Yii 2.0

Сообщение TM123 »

1. Спасибо всем за ссылки, завтра почитаю.
2. Нет задачи переписать проект на Yii 2, есть задача разработать новые визуальные библиотеки и писать дальше на Yii 2, текущие визуальные библиотеки на Yii 1.1 прекрасно можно запустить под Yii 2, проблема в том что в них затруднительно прикручивать бантики, они заточены были на то чтобы очень быстро клепать очень много кода, технологии и визуализация клиентского интерфейса ушли за 6 лет на столько далеко, а народ настолько к этому привык, что не понимает почему то что для них в инете само собой, на работе совсем не так.
3. В процессе данного перехода, планируется перенести около 20-30% исходного кода проекта на Yii 2 без вариантов и это около полугода, остальное в фоновом режиме за 2-3 года в формате тестовых задач на испытательный срок новых программеров и в качестве развлечения/отвлечения от ежедневной текучки. Проект изначально строился по архитектуре жизни на нескольких слабых серверах, потому что не было уверенности что хозяин даст деньги на мощные, поэтому часть функционала вообще будет вынесена на отдельные сервера и продолжит жить на Yii 1.1, например, охраннику фиксирующему данные по въездам машин и входам не нужен мегаинтерфейс, он прекрасно в базу запишет данные с помощью старого интерфейса на Yii 1.1, а вот челу анализирующему прохождение отгрузки на складе на основе данных СКУД и зафискированных въездов хочется плюшек и он их получит на интерфейсе Yii 2, и это все нормально, потому что оба смотрят в одну и ту же таблицу, но т.к. есть однозначное направление движения данных, т.е. где они возникают и кем они используются, совершенно не проблема что эти интерфейсы работают на разных фреймворках. Нет необходимости писать 2 комплекта моделей или ухищряться в написании модели таким образом, чтобы она работала в обоих фреймворках.
4. В проекте по сути есть 3 высокоинтегрированных в том числе между собой модуля CRM, Workflow, Документохранилище, которые содержат сложную логику, вот их надо переписать, и единовременно переписать их невозможно - это длительный процесс, поэтому тут надо гонять данные из одного фреймворка в другой, невозможно или крайне трудно часть сложной логики оставить в Yii 1.1 и просто начать писать рядом новый функционал на Yii 2, поэтому тут придется все постепенно переписать, но и тут нет задачи тотального переписывания, пользовательская часть Workflow требует бантиков и дружелюбия к пользователю, а интерфейсом настройки диаграмм пользуются только программисты и им нужны совсем не бантики, поэтому тут по ранее описанной схеме, пишет в таблицы старый интерфейс, пользуется плодами настроек новый интерфейс.
TM123
Сообщения: 608
Зарегистрирован: 2011.06.09, 11:18

Re: Переход с Yii 1.1 на Yii 2.0

Сообщение TM123 »

Убедился в словах zelenin, ничего толкового нет, просто общий треп на тему что не все так плохо, можно без проблем перейти, но для проекта типа сайт визитка 3 страницы, если говорить о серьезных проектах с нюансами, то судя по всему придется вспомнить молодость в Yii 1.1 и пойти копаться в исходниках обоих фреймворков, чтобы подружить их в части авторизации пользователей и распределения прав, собственно это единственное место где они реально взаимодействуют друг с другом, то что они гоняют общие данные через таблицы - это уже из другой оперы.

Всем еще раз спасибо за ссылки, в конце концов надо было убедиться что велика нет.
TM123
Сообщения: 608
Зарегистрирован: 2011.06.09, 11:18

Re: Переход с Yii 1.1 на Yii 2.0

Сообщение TM123 »

Если кому интересно про фреймворк независимый код. Почитал. Мнение таково.

Все это напоминает 90-ые годы и ООП, есть придуманная идеология программирования, есть ее реализация в разных языках программирования, идея красивая и даже хорошая, но нет задач под нее, поэтому пихаем куда не попады, в результате всегда ухудшаем быстродействие и практически всегда увеличиваем запутанность кода и усложняем его поддержку, потому что данная концепция не подходит для реализации выбранной задачи. Прошли 90-ые, появились задачи, ООП стало неотемленой частью нашей жизни в части, в которой она позволяет сконцентироваться программисту разработчику на решении конкретной бизнес задачи, именно задачи бизнеса, позволяя ему забыть о борьбе с железом, протоколами и т.д. все это решает тот или иной фреймворк построенный как правило на основе ООП, но реально при решении задачи фиксации въезда транспорта нет смысла создавать класс с точки зрения бизнес задачи, мы его создаем с точки зрения упрощения решения вопроса валидации и общения с хранилищем, нет смысла плодить разные классы для регистрации грузовиков и легковушек, хотя конечно такие адепты ООП как разработчики onPHP сделают только так и никак иначе. В общем что я хочу сказать, в подавляющем большинстве бизнес задач ООП как таковой не имеет смысла именно в части использования его для решения бизнес задачи.
Собственно об описанных концепциях в статье, все это только интересная идея которая подходит для решения крайне узкого набора задач, например, если пишется драйвер устройства или новый SAP R3 ориентированный на продажу, такие подходы не только имеет смысл использовать, но даже обязательно, потому что в разработку системы будет вложено гигантское количество денег и времени, на основании состоятельности данной системы будет строиться весь бизнес, но таких проектов крайне мало, а вот проектов типа Вася Пупкин автоматизирует Рога и Копыта в которой работает 100-200 человек включая уборщиц - вот таких вариантов подавляющее большинство и Рога и Копыта не в состоянии купить SAP R3 и тут надо понимать, что если ПО пишется для одного потребителя, то все эти идеи полная глупость, усложнение проекта которое не дает никаких выгод, более того, ведение проекта в таком формате, думаю, потребует куда больше денег и времени, чем просто переписать наиболее востребованный функционал на новый фреймворк.
Собственно согласен с одним из комментаторов статьи - такие статьи действуют на не окрепшие умы молодника пагубно, им кажется что это круто, в результате они концентируются на программных изысках своего кода, а не на решение задачи, кончается это плачевно, Ашоту владельцу интернет магазина не интересует сколько крут код его ИМ, его интересует сколько ему стоит его разработка, поддержка и сколько надо времени, все это он сравнивает с деньгами полученными от магазина и Вася Пупкин оказывается без работы или продолжает прозибать на смешной зарплате, потому что на таком незначительном проекте все его изыски программирования не имеют смысла, хотя по сути он может быть даже очень приличным программером.
Проблема которую я описал абзацем выше стоит перед молодником в полный рост, они есть устойчивое мнение что можно чему-то научится только в IT компаниях, что там интересно и там работают профи, в реальности в подавляющем большинстве IT компаний ты будешь клепать одни и те же однотипные задачи, а при попытке задать вопросы о том зачем и почему, тебе сразу закроют рот, потому что IT компания это не место для полета мысли, а программист не творец, а средство заработка денег, такое же как и метла уборщицы и зарплата их не очень большая, потому что все взаимозаменяемые. Только в небольших IT, которые вынуждены крутиться для выживания и работают с разными задачами или крупняках занимающихся самостоятельной автоматизацией и у которых есть масса мест и как следствие разных задач.
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Переход с Yii 1.1 на Yii 2.0

Сообщение zelenin »

все так - во главу угла надо ставить рациональность.
но статья была приведена в качестве примера для реализации фреймворконезависимого кода. Не надо выкидывать фреймворк и писать с нуля самому, но надо изолировать код непосредственно приложения от фреймворка, используя адаптеры, использующие компоненты фреймворка (или независимые библиотеки).
Представим две системы: одна написана в стиле yii с фреймворком, проникающим во все уголки кода приложения, вторая же - независимо с адаптерами.
В первом случае нам нужно будет и не весь код переписать, но 90% классов. Во втором случае 5% кодовой базы (адаптеры).
Просто отделяем инфраструктурные моменты от приложения тоненькой прослойкой. Второе приложение переписать на новую версию yii, или любой другой фреймворк проще в разы.
TM123
Сообщения: 608
Зарегистрирован: 2011.06.09, 11:18

Re: Переход с Yii 1.1 на Yii 2.0

Сообщение TM123 »

все что я хотел сказать в предыдущем посте очень правильно написано тут - https://habrahabr.ru/company/mailru/blog/308788/ подтверждаю на собственном опыте почти все.

P.S. Предыдущий пост не перечитал, извиняюсь большое количество опечаток, в слепую набираю.
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Переход с Yii 1.1 на Yii 2.0

Сообщение zelenin »

TM123 писал(а):все что я хотел сказать в предыдущем посте очень правильно написано тут - https://habrahabr.ru/company/mailru/blog/308788/ подтверждаю на собственном опыте почти все.

P.S. Предыдущий пост не перечитал, извиняюсь большое количество опечаток, в слепую набираю.
так и я о том же: Все PHP-фреймворки общего назначения — отстой! (Расмус Лердорф)
Неправильный путь: всегда использовать фреймворк поверх PHP.

Перефразирую: нужно не приложение строить на базе фреймворка, а приложение писать с помощью фреймворка, где он используется в качестве одной из прикладных библиотек. Из этого опять же вывод - слоить приложение и инфраструктуру. И это та самая разница между лапшекодом и хорошо написанным приложением.
TM123
Сообщения: 608
Зарегистрирован: 2011.06.09, 11:18

Re: Переход с Yii 1.1 на Yii 2.0

Сообщение TM123 »

zelenin писал(а):все так - во главу угла надо ставить рациональность.
но статья была приведена в качестве примера для реализации фреймворконезависимого кода. Не надо выкидывать фреймворк и писать с нуля самому, но надо изолировать код непосредственно приложения от фреймворка, используя адаптеры, использующие компоненты фреймворка (или независимые библиотеки).
Представим две системы: одна написана в стиле yii с фреймворком, проникающим во все уголки кода приложения, вторая же - независимо с адаптерами.
В первом случае нам нужно будет и не весь код переписать, но 90% классов. Во втором случае 5% кодовой базы (адаптеры).
Просто отделяем инфраструктурные моменты от приложения тоненькой прослойкой. Второе приложение переписать на новую версию yii, или любой другой фреймворк проще в разы.
Это все понятно и не вызывает возражений, я хотел сказать что круг задач решаемых на данной концепции программирования, тем более с применением PHP, крайне узок и не подходит для большинства проектов. Если говорить о моем проекте, то данная идея частично реализована с помощью выноса большинства бизнес логики в хранимые процедуры PG, которые не зависят ни от Yii, ни от PHP, собственно они и от версий Postgres не особо зависят. Из SQL невозможно устанавливать внешние соединения, а писать расширения к PG - это уже не задача этого проекта, хотя лично для меня тема весьма интересная. Я считаю что в нашем проекте концепция MVC используется правильно, большая часть кода, которая реализована на PHP, может перенестись в формате copy-paste. В общем-то мы возвращаемся к теме, если хочется использовать плюшки, то ты точишь проект под средство на котором он работает и садишься на иглу, у нас фреймворк используется для общения в web сервером, с серверами баз данных, реализует распределение прав средствами фреймворка, вся остальная бизнес-логика фреймворк независимая и если не использовать плюшки типа поведений, я не понимаю как можно написать фреймворк зависимый код.
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Переход с Yii 1.1 на Yii 2.0

Сообщение zelenin »

TM123 писал(а):Это все понятно и не вызывает возражений, я хотел сказать что круг задач решаемых на данной концепции программирования, тем более с применением PHP, крайне узок и не подходит для большинства проектов
в общих чертах это можно понимать как "SOLID не подходит для большинства проектов", хотя скорее это непременный атрибут любого проекта кроме "наколенных". Все же кажется, что мы о разных вещах говорим.
TM123 писал(а):Если говорить о моем проекте, то данная идея частично реализована с помощью выноса большинства бизнес логики в хранимые процедуры PG, которые не зависят ни от Yii, ни от PHP, собственно они и от версий Postgres не особо зависят
я бы наоборот сказал: а) размазывание бизнеса по различным слоям, б) теперь вы зависите не только от php/yii, но и от postgres/sql
TM123 писал(а):Я считаю что в нашем проекте концепция MVC используется правильно, большая часть кода, которая реализована на PHP, может перенестись в формате copy-paste
MVC - это парадигма другого порядка. Приложение вообще ничего не должно знать об MVC (если вы вообще в данном случае уместно употребляете данный термин).
TM123 писал(а):вся остальная бизнес-логика фреймворк независимая и если не использовать плюшки типа поведений, я не понимаю как можно написать фреймворк зависимый код.
хотите сказать что модели у вас в проекте не AR как в 99.99% yii-проектов? Может хотите сказать, что в моделях у вас yii-шный rbac не используется? может и сервисный слой используется вместо бизнеса прямо в экшнах?
TM123
Сообщения: 608
Зарегистрирован: 2011.06.09, 11:18

Re: Переход с Yii 1.1 на Yii 2.0

Сообщение TM123 »

zelenin писал(а):я бы наоборот сказал: а) размазывание бизнеса по различным слоям, б) теперь вы зависите не только от php/yii, но и от postgres/sql
Возвращаемся к уместности использования разных подходов, можно использовать PHP best practcs, создать 100000 экземпляров классов типа соот. модель и потом PHP все последовательно обработать, а можно написать один запрос и точно так же обработать, только у SQL запроса иногда требуется в десятки тысяч раз меньше времени и памяти. Да бизнес логика лежит в SQL, а в PHP только та часть, которая не может быть положена в SQL, потому что не все может сделать SQL, а писать расширения к PG чтобы сделать и это - не считаю разумным, потому что сложно, нет специалистов и возникает зависимость от версии PG. Я вообще не сторонник подхода - у вас медленно работает сервер, поставьте 2 сервера, у вас медленно работают 2 сервера, поставьте 3 сервера.
zelenin писал(а):MVC - это парадигма другого порядка. Приложение вообще ничего не должно знать об MVC (если вы вообще в данном случае уместно употребляете данный термин).
сказать что приложение ничего не знает о фреймворке и MVC - это будет лукавством, но эти знания сведены к минимуму, хотя бы потому что вызов многих возможностей фреймворка крайне утомителен, приведу пример, можно каждый раз писать

$uid=Yii::app()->user->getId();

а можно один раз в базовом контроллере и моделе в конструкторе написать

$this->uid=Yii::app()->user->getId();

а потом везде писать

$this->uid

Это не менее читаемо, зато гораздо проще пишется, особенно на фоне того что все редакторы PHP предоставят автоподстановку, а в случае полной записи вся автоподстановка закончится на app(). Я вообще не понимаю почему это не сделано в качестве базовой функциональности Yii.

Таким образом все знание о фреймворке сводится к одной строке, а следовательно в последующем классы контроллеров и моделей можно породить от другого класса не имеющего отношения к Yii, в котором просто написать аналог строки. При описании правил валидации, используется класс хелпер, по сути переписать класс и модели можно так же порождать от другого класса другого фреймворка. Все конечно не так просто как я тут пишу, но суть в том что практически везде используются прослойки хелперы между собственно самим фреймворком и приложением, где то они уменьшают функциональность фреймворка, но задача перехода на другой фреймворк становится с ними не на столько не посильной, хотя нельзя сказать что простой.
zelenin писал(а):хотите сказать что модели у вас в проекте не AR как в 99.99% yii-проектов? Может хотите сказать, что в моделях у вас yii-шный rbac не используется? может и сервисный слой используется вместо бизнеса прямо в экшнах?
И да и нет. В проекте используется правило - меняются данные в формате изменения 1-2 записей строго через модели и тут работа с базой данных идет через AR, но читаются данные из базы и массовые изменения проводятся строго с помощью SQL посредством конструкций Yii::app()->db*->createCommand()->query*(), потому что это работает быстрее. Если данные меняются единичными записями, то обычно эти изменения проводит пользователь, его данные надо проконтролировать, а модели весьма помогают в проведении сложных валидаций, особенно если валидация идет сразу с использованием нескольких серверов и не все они SQL, но если данные меняются массово, то их как правило делает программист, пусть и по инициативе пользователя, а на этот случай обычно проверки менее строгие и они легко реализуются на внешних ключах и констрейнтах, в исключительных случаях триггерами.
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Переход с Yii 1.1 на Yii 2.0

Сообщение zelenin »

я не понимаю как можно написать фреймворк зависимый код
работа с базой данных идет через AR
как можно написать? видимо легко как получилось это в обсуждаемом проекте.
Возвращаемся к уместности использования разных подходов, можно использовать PHP best practcs, создать 100000 экземпляров классов типа соот. модель и потом PHP все последовательно обработать, а можно написать один запрос и точно так же обработать, только у SQL запроса иногда требуется в десятки тысяч раз меньше времени и памяти.
не знаю о чем вы. что код в базе, что код в приложении, ожидает получить какой-то набор данных. Если получение данных нельзя выразить в одном запросе, т.к. требуется какая-то дополнительная обработка, то сделайте 2-3 запроса. Это стоит копейки, создавать экземпляры класса не нужно, и это дешевле в поддержке чем размазывание логики.
сказать что приложение ничего не знает о фреймворке и MVC - это будет лукавством, но эти знания сведены к минимуму
когда я говорю о приложении, то имею в виду непосредственно бизнес-приложение - оно ничего не знает об mvc и находится на 100% в слое M. Если приложение в слое M напрямую использует что-то из контроллера или вьюшки, то опять же ваше приложение завязано на фреймворк.

Пример про Yii::app()->user->getId() не относится к приложению в моем контексте.
И да и нет. В проекте используется правило - меняются данные в формате изменения 1-2 записей строго через модели и тут работа с базой данных идет через AR, но читаются данные из базы и массовые изменения проводятся строго с помощью SQL посредством конструкций Yii::app()->db*->createCommand()->query*(), потому что это работает быстрее. Если данные меняются единичными записями, то обычно эти изменения проводит пользователь, его данные надо проконтролировать, а модели весьма помогают в проведении сложных валидаций, особенно если валидация идет сразу с использованием нескольких серверов и не все они SQL, но если данные меняются массово, то их как правило делает программист, пусть и по инициативе пользователя, а на этот случай обычно проверки менее строгие и они легко реализуются на внешних ключах и констрейнтах, в исключительных случаях триггерами.
в общем жесточайшая завязка на фреймворк, которая приведет к переписыванию 95% кода.

Ладно, я свои мысли донес, но использование yii это как крест - либо ты пишешь лапшу, либо не используешь yii.
Ответить