@HellWalk

Использовать compact для передачи моделей в вид это хороший прием или наоборот?

Сейчас по работе вникаю в один крупный проект, там много где применяется прием передачи моделей в вид через compact, который делает из объектов массивы:

return $this->render('main-view', compact('comInfo', 'SearchingForm',
'revCompany', 'modelComment', 'insuranceType'));


Мне такой подход не совсем понятен - например, автор кода передает на одну страницу и массивы (через которые выводит данные) и объекты (чтобы через них собрать ActiveForm) - у меня возникает логичный вопрос - а зачем? Не проще ли передавать объекты и дальше работать с ними и для вывода и для ввода информации.

Но я зеленый джуниор, который с Yii2 работает неделю, возможно что-то не понимаю.

Update
Понял свою ошибку - думал, что compact преобразует объекты в массивы, но объекты так и остаются объектами.
  • Вопрос задан
  • 2079 просмотров
Решения вопроса 1
iiifx
@iiifx
PHP, OOP, SOLID, Yii2, Composer, PHPStorm
return $this->render('main-view', ['comInfo' => $comInfo, 'SearchingForm' => $SearchingForm,
'revCompany' => $revCompany, 'modelComment' => $modelComment, 'insuranceType' => $insuranceType]);


Что-то изменилось? Для вас строка стала длиннее, а для PHP ничего не поменялось. А по поводу кол-ва передаваемых параметров при ренедере, увы это уже зависит от разработчика и его стиля программирования.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Decadal
@Decadal
У вас сам вопрос звучит по одному, а описание вопроса выводит к другой дискуссии.
Про compact: в книге Марка Сафронова советуется такой метод передачи. На практике встречается редко. Насколько я помню, PhpStorm такую вещь не подхватывает и потом ругается - пожалуй единственный минус.

Не проще ли передавать объекты и дальше работать с ними и для вывода и для ввода информации.

А насчёт этого - ну да, вы правы, странно передавать и массивы и объекты, которые можно свести к этим массивам. Но может быть, это вы так поняли код, а на самом деле задумка была глубже. Без самого кода не скажешь, есть ли смысл так делать, или нет
Ответ написан
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
передачи моделей в вид через compact

Дело вкуса, мне не особо нравится, но дело привычки. И через compact однозначно строка более короткая. Так что. наверное это норм. Но как это связано с объектами и массивами? compact на это никак не влияет. Это форма записи, грубо говоря. Там могут быть и объекты и массивы и строки и что угодно.
Не проще ли передавать объекты

Объекты больше кушают ресурсов, чем массивы. Так что при разработке лучше использовать объекты, а на этапе оптимизации, часть, где это возможно, заменить массивами. Но все еще не понятно каким боком это связано с compact
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы