Yii2, почему?!
- samdark
- Администратор
- Сообщения: 9489
- Зарегистрирован: 2009.04.02, 13:46
- Откуда: Воронеж
- Контактная информация:
Yii2, почему?!
Многие хотят задать вопросы вида «почему в Yii2 сделали штуку X именно так». Задавайте. Я попробую ответить.
Нравится Yii? Давайте сделаем его лучше!.
Re: Yii2, почему?!
И самый актуальный вопрос от многих кто спрашивал:
почему echo в controller?
p.s. мне ок)
почему echo в controller?
p.s. мне ок)
Re: Yii2, почему?!
Вот это echo в экшенах имхо зло, ибо оно будет провоцировать начинающих выводить html и прочее без рендера. Зачем писать echo render(блабла) если можно просто echo '<html...>';. Чисто психологически как-то.
- samdark
- Администратор
- Сообщения: 9489
- Зарегистрирован: 2009.04.02, 13:46
- Откуда: Воронеж
- Контактная информация:
Re: Yii2, почему?!
echo потому как удалось избавиться от параметра и непостоянного return. В итоге стало понятнее, что именно происходит и более стабильно.
Нравится Yii? Давайте сделаем его лучше!.
- lancecoder
- Сообщения: 2532
- Зарегистрирован: 2012.06.26, 17:16
Re: Yii2, почему?!
поиск, критерии, как теперь будет выглядеть "слепок" model_to_criteria?
п.с. вообще не понял этот шаг, у меня в каждой модели было, тольке не дп, а критерия с алиасами, как вх. параметр в функциию, по дефолту равно имени таблицы, и можно было легко делать поиск между таблиц $model1->getSearchCriteria()->mergeWith->( $model2->getSearchCriteria() );
п.с. вообще не понял этот шаг, у меня в каждой модели было, тольке не дп, а критерия с алиасами, как вх. параметр в функциию, по дефолту равно имени таблицы, и можно было легко делать поиск между таблиц $model1->getSearchCriteria()->mergeWith->( $model2->getSearchCriteria() );
Re: Yii2, почему?!
И мне не совсем ясно для чего echo ....Можно пойти по пути Symfony и сделать return, но echo, внутри класса выглядит как-то не очень...
p.s. решается новым базовым контроллером и переопределением метода, но хотелось бы видеть красивости из коробки, конечно +)
p.s. решается новым базовым контроллером и переопределением метода, но хотелось бы видеть красивости из коробки, конечно +)
Re: Yii2, почему?!
-В итоге стало понятнее, что именно происходит и более стабильно.
По моему и раньше было понятно что делает метод render
- echo \yii\widgets\Menu::widget($this, array('items' => $items));
Тоже какой то ужас, раньше было проще и красивее
По моему и раньше было понятно что делает метод render
- echo \yii\widgets\Menu::widget($this, array('items' => $items));
Тоже какой то ужас, раньше было проще и красивее
- slavcodev
- Сообщения: 3134
- Зарегистрирован: 2009.04.02, 21:42
- Откуда: Valencia
- Контактная информация:
Re: Yii2, почему?!
ИМХО это дело вкуса. Мне нравится. Читая код действия понятно что он выводит. Что там в render не всегда известно. Может метод переписан в базовом контролере.TBIKC писал(а):-В итоге стало понятнее, что именно происходит и более стабильно.
По моему и раньше было понятно что делает метод render
- echo \yii\widgets\Menu::widget($this, array('items' => $items));
Что именно тут ужасного? echo? Совсем даже не ужасно. Избавились от третьего параметра который возвращал результат виджета вместо вывода. Теперь все работает однозначно, т.е. вывод. Очень часто нужно было результат виджета в переменную сохранять и потом вставлять.TBIKC писал(а):Тоже какой то ужас, раньше было проще и красивее
Жду Yii 3!
Re: Yii2, почему?!
Частично некрасивость синтаксиса вроде:
Может скрыть пхп своими тегами <?= ?>, но лично мне, все равно не ясно для чего было делать именно так.
В моих проектах в 90% случаях виджет рендерит свой кусок на страницу и лишь в 10% случаях я запихиваю вывод виджета в переменную и мне совсем было не сложно передать лишний параметр.
Первый параметр $this - уж точно нельзя назвать "новичок-френдли".
Грустно как-то =(
Код: Выделить всё
echo \yii\widgets\Menu::widget($this, array('items' => $items));
В моих проектах в 90% случаях виджет рендерит свой кусок на страницу и лишь в 10% случаях я запихиваю вывод виджета в переменную и мне совсем было не сложно передать лишний параметр.
Первый параметр $this - уж точно нельзя назвать "новичок-френдли".
Грустно как-то =(
- kulikov
- Сообщения: 3
- Зарегистрирован: 2013.05.14, 11:02
- Откуда: Россия, Ростов-на-Дону
- Контактная информация:
Re: Yii2, почему?!
@xoma, касательно $this - согласен на все 100%, так же как и насчёт того, что было не сложно передавать доп.параметр.
Использую yii почти во всех проектах и могу сказать, что прибегать к возврату данных вместо вывода мне приходилось не так уж часто.
Да, также согласен касательно 'echo' в контроллере. Это не самый лучший выход из ситуации и есть ведь на то причины.
Сколько смотрел на разные фреймворки, но остановился на yii именно благодаря его логичности и простоте. А сейчас всё сводится к простому переделыванию и переписыванию на другой лад.
Жаль, если разработчики не прислушаются к мнению сообщества, в этом плане будет действительно очень жаль.
Использую yii почти во всех проектах и могу сказать, что прибегать к возврату данных вместо вывода мне приходилось не так уж часто.
Да, также согласен касательно 'echo' в контроллере. Это не самый лучший выход из ситуации и есть ведь на то причины.
Сколько смотрел на разные фреймворки, но остановился на yii именно благодаря его логичности и простоте. А сейчас всё сводится к простому переделыванию и переписыванию на другой лад.
Жаль, если разработчики не прислушаются к мнению сообщества, в этом плане будет действительно очень жаль.
Re: Yii2, почему?!
Кроме того, теперь будет гораздо сложнее реализовать, как я их называю, "динамические" виджеты. К примеру у нас модульная система и все виджеты раскиданы по модулям.
На фронте мы используем виджеты из всех активных модулей, что произойдет если модуль отключить/удалить - класс виджета не будет найден и сайт упадет.
В Юпи! мы решили это вот так https://github.com/yupe/yupe/blob/maste ... er.php#L72 знаю, что не идеал, но оно работает.
Так как теперь появилься объект Вью, думаю что было бы логично отдать рендер виджета именно ему, те что-то типа:
Только теперь у нас в $this не контроллер, как было раньше, а именно Вью-обект. Переопределяя вью и его методы работы с виджетами - можем получить, точнее не потерять, ту гибкость, которая есть сейчас....
На фронте мы используем виджеты из всех активных модулей, что произойдет если модуль отключить/удалить - класс виджета не будет найден и сайт упадет.
В Юпи! мы решили это вот так https://github.com/yupe/yupe/blob/maste ... er.php#L72 знаю, что не идеал, но оно работает.
Так как теперь появилься объект Вью, думаю что было бы логично отдать рендер виджета именно ему, те что-то типа:
Код: Выделить всё
$this->widget('Class',$params);
- kulikov
- Сообщения: 3
- Зарегистрирован: 2013.05.14, 11:02
- Откуда: Россия, Ростов-на-Дону
- Контактная информация:
Re: Yii2, почему?!
Соглашусь с @xoma. Не хочется брать готовый фреймворк и писать свои костыли на все случаи жизни. @Sam Dark Можем ли мы как то повлиять на ход разработки?
Re: Yii2, почему?!
Успех Yii 1 в том (на сайте так же написано), что он даёт нам лучшие возможности и удобства из различных фреймворков и систем.
Yii incorporates many ideas and work from other well-known Web programming frameworks and applications.
Сейчас он начинает равняться с другими, появляются лишние телодвижения в коде, идёт усложнение, а не на упрощение пользования
В чём успех Rails - пишешь меньше, получаешь больше, Yii 1 - в принципе следует этому
Что мы видим в Yii 2 ?
Yii incorporates many ideas and work from other well-known Web programming frameworks and applications.
Сейчас он начинает равняться с другими, появляются лишние телодвижения в коде, идёт усложнение, а не на упрощение пользования
В чём успех Rails - пишешь меньше, получаешь больше, Yii 1 - в принципе следует этому
Что мы видим в Yii 2 ?
- kulikov
- Сообщения: 3
- Зарегистрирован: 2013.05.14, 11:02
- Откуда: Россия, Ростов-на-Дону
- Контактная информация:
Re: Yii2, почему?!
Да, согласен с вами. Есть такая беда. Сейчас появляется большое количество усложнений фреймворка, когда хотелось бы видеть оптимизацию, большую скорость работы и побольше плюшек. Будем ждать от Yii2 только лучшего =)TBIKC писал(а):Успех Yii 1 в том (на сайте так же написано)
Yii incorporates many ideas and work from other well-known Web programming frameworks and applications.
Что он даёт нам лучшие возможности и удобства из различных фреймворков и систем.
Сейчас он начинает равняться с другими, появляются лишние телодвижения в коде, имхо вы пошли на усложнение, а не на упрощение пользования
В чём успех Rails - пишешь меньше, получаешь больше, Yii 1 - стараемся так же делать
Что мы видим в Yii 2 ?
- slavcodev
- Сообщения: 3134
- Зарегистрирован: 2009.04.02, 21:42
- Откуда: Valencia
- Контактная информация:
Re: Yii2, почему?!
Пока не одного аргумента, кроме привычек. Думаю это пройдет )
1) render в действии усложнял расширения контролера. Переопределить действие без бубна было не реально
2) c виджетам может еще подправят и добавят в View метод виджета, хотя не думаю что он нужен, мне не нравится классы строкой передавать
может выглядит ужасно, но если научится выносить неймспейсы в хидер файла то все отлично читается. Плюс избавились от парсинга строки каждый раз на поиск псевдонима путей
1) render в действии усложнял расширения контролера. Переопределить действие без бубна было не реально
2) c виджетам может еще подправят и добавят в View метод виджета, хотя не думаю что он нужен, мне не нравится классы строкой передавать
Код: Выделить всё
echo \yii\widgets\Menu::widget($this, array('items' => $items));
Код: Выделить всё
use yii\widgets\Menu;
echo Menu::widget($this, array('items' => $items));
Жду Yii 3!
- samdark
- Администратор
- Сообщения: 9489
- Зарегистрирован: 2009.04.02, 13:46
- Откуда: Воронеж
- Контактная информация:
Re: Yii2, почему?!
lancecoder, не понял вопроса про критерий.
Рано говорить, что Yii стал сложнее и т.д. Он ещё даже до альфы не добрался. Всё можно менять как угодно. Были бы идеи.
На ход разработки повлиять можно обсуждениями на github. Особенно, если чётко и по делу приводить примеры альтернативных решений, их объективные плюсы и минусы.
Виджеты
Виджеты сделали так чтобы:
1. Работало дополнение в IDE, проверка правильности написания класса, переход к классу.
2. Можно было сделать use в шапке и сократить имя виджета непосредственно при вызове.
3. Меньше работы коду.
$this, конечно, плохо выглядит, но как его не передавать не придумали пока. Если есть идеи — пишите.
«Дополнительные» echo
Как лучше сделать? Какие причины делать без echo, кроме привычки? Почему return лучше echo?
Рано говорить, что Yii стал сложнее и т.д. Он ещё даже до альфы не добрался. Всё можно менять как угодно. Были бы идеи.
На ход разработки повлиять можно обсуждениями на github. Особенно, если чётко и по делу приводить примеры альтернативных решений, их объективные плюсы и минусы.
Виджеты
Виджеты сделали так чтобы:
1. Работало дополнение в IDE, проверка правильности написания класса, переход к классу.
2. Можно было сделать use в шапке и сократить имя виджета непосредственно при вызове.
3. Меньше работы коду.
$this, конечно, плохо выглядит, но как его не передавать не придумали пока. Если есть идеи — пишите.
«Дополнительные» echo
Как лучше сделать? Какие причины делать без echo, кроме привычки? Почему return лучше echo?
Нравится Yii? Давайте сделаем его лучше!.
- slavcodev
- Сообщения: 3134
- Зарегистрирован: 2009.04.02, 21:42
- Откуда: Valencia
- Контактная информация:
Re: Yii2, почему?!
Sam Dark писал(а):$this, конечно, плохо выглядит, но как его не передавать не придумали пока. Если есть идеи — пишите.
Код: Выделить всё
Yii::$app->controller->view
Жду Yii 3!
- slavcodev
- Сообщения: 3134
- Зарегистрирован: 2009.04.02, 21:42
- Откуда: Valencia
- Контактная информация:
Re: Yii2, почему?!
Я не знаю истинных причин echo в контроллере, выше ты как-то поверхностно ответил. Но для меня return лучшеSam Dark писал(а):Как лучше сделать? Какие причины делать без echo, кроме привычки? Почему return лучше echo?
- Лучше расширяемость контроллеров. Но я уже слышал твое мнение что это не всегда хорошо. Но имхо при правильной архитектуры приложения, проблем не должно быть.
- Меньше написанного кода (хотя я за этим слепо не гонюсь), но return может быть очень гибкий:
- return array - это параметры View
- return View - ясно его рендерим
- return string - выводим текст
- и даже return integer > 0 можно считать кодом ошибки
Жду Yii 3!
- slavcodev
- Сообщения: 3134
- Зарегистрирован: 2009.04.02, 21:42
- Откуда: Valencia
- Контактная информация:
Re: Yii2, почему?!
кстати SamDark почему бы $this не убрать вторым параметром, так имхо логичнее, по аналогии с Object::__construct где первым идет массив настроек объекта.mc-bear писал(а):Код: Выделить всё
use yii\widgets\Menu; echo Menu::widget($this, array('items' => $items));
Жду Yii 3!
- samdark
- Администратор
- Сообщения: 9489
- Зарегистрирован: 2009.04.02, 13:46
- Откуда: Воронеж
- Контактная информация:
Re: Yii2, почему?!
В случае 2) есть минус. return получается очень универсальный и многозначный. Куча всего происходит за нашей спиной и что именно происходит не ясно. Почему, например, я не могу сделать return Post::find(10)? return array — это параметры которого view? и т.д.
Нравится Yii? Давайте сделаем его лучше!.