Vitaly
сейчас у тебя это работает, но ты хочешь, чтобы это контейнер сам резолвил?
Borys
Да
Vitaly
либо вариант с оберткой этих параметров в DTO, тогда ты сможешь объявить этот DTO, как зависимость контроллера (тем более, если у тебя потом будет больше появляться параметров, то очень даже кстати будет)
Либо если хочешь, чтобы прям строки были, то придется сделать эти свойства публичными, тогда ты сможешь через контейнер их внедрить
Vitaly
но чтобы прям в конструктор подставлять их - так не получится
Borys
Если строки будут публичными, каким образом будет выглядить внедрение?
Vitaly
$container->set(YourController::class, [
'class' => YourController::class,
'dependent_string' => 'my string'
]);
Vitaly
ну и конструктор в этом случае переопределять не надо
Borys
Спасибо.
Borys
Vitaly
либо можешь через callable injection, там создаешь контроллер через Yii::createObject(), и свойства устанавливаешь
Vitaly
http://www.yiiframework.com/doc-2.0/guide-concept-di-container.html#php-callable-injection
Dmitry
Borys
Borys
Там полный код контроллера выше же)
Borys
Там выше Виталий объяснял, почиьай если интересно
Dmitry
Ярослав
Смысл? Мне DI нужен.
Самое интересное, что Боря просил DI, а ему Service Locator посоветовали :)
Ярослав
Borys
Borys
Ярослав
Dmitry
Dmitry
Dmitriy Kuts с Vladimir помоему дискутировали
Ярослав
Никто не спорит, что путают те люди, которые в вопросе не разбираются
Ярослав
Долото и лом ведь тоже путают )
Ярослав
Хотя хз кто
Dmitry
Ярослав
А нахера в контроллере конфиги ?
Ярослав
Dmitry
вот
Ярослав
Это называется толстые контроллеры , когда на них возлагают больше, чем нужно
Ярослав
На самом деле инжектить конфиг нужно в класс, который будет обрабатывать логику того дерьма, что там есть
Ярослав
У кого вообще были кейсы, когда di больше мешал, чем приносил пользу ?
Anonymous
Ярослав
Надо идти к симфонистам в чат :)
Тут все за Service Locator )
Ярослав
Ахха
Dmitry
Borys
Borys
Если второе, то чем он толст?
Ярослав
У каждого должна быть своя зона ответственности
Об этом гласит SOLID
Ярослав
Borys
т.е. мне нужно было создать сервис для приёма двух строк, делать в сервисе обработку, вернуть массив, а в контроллере его получить и сунуть в actions
Ярослав
А пример такой:
Можно размазывать гавно по стенам, а можно по туалету
Как бы разница огромная
Borys
Как по мне это чересчур
Borys
И между идеал кодом и чёрт ногу сломит должна быть середина
Borys
В некоторых случаях и AR дефолтного хватает.
Ярослав
Мы не об AR сейчас говорим
Ярослав
С чего ты взял, что контроллер должен знать о конфигах класса Image ?
Ярослав
Инжекть сразу в класс, который занимается картинками
Ярослав
Ты получается лишние движения делаешь
Borys
Borys
Мне некогда полемику разводить)
Ярослав
Покажи, пожалуйста, сам код этих action'ов, image-upload
Borys
Код сам себя не напишет, спасибо за ссылки и советы.
Ярослав
Бро, тебе помочь хотят :)
Ярослав
Джинн
+1
Откуда ты возьмёшь шекели, поц? У тебя ведь даже нет партбилета!
Borys
Ярослав
Публичное api этой библиотеки заставляет тебя такое делать ?)
Ярослав
Тогда легче не заморачиваться, если code review у тебя не проводят
Роман
ребят вопрос
сильно ли тормозит GridView ? Точнее не лучше ли использовать тот же foreach ?
Ярослав
Лол, напиши свой бенчмарк, мы поугараем)
Роман
тот же laravel?
Роман
просто такие вещи притормаживают
<?= GridView::widget([
'dataProvider' => $dataProvider,
'filterModel' => $searchModel,
'rowOptions' => function($model) {
/** @var $model \common\models\Action */
if($model->isExpired()) {
return ['class' => 'expired'];
}
return ['class' => 'working'];
},
'columns' => [
'id',
'product_type',
'name',
'base1c_code',
'BeginDate',
'EndDate',
[
'format' => 'raw',
'value' => function ($model) {
return Html::a('Редактировать',['action/update','id'=>$model->id]);
},
],
],
]); ?>
Роман
наткнулся в коде