Size: a a a

2020 April 08

AM

Alexander Makarov in Yii Framework 3
источник

NO

Nex Otaku in Yii Framework 3
Понял по подсветке кода, надо было "<?php" в начале указать )
источник

Д

Дмитрий in Yii Framework 3
логично, что если хочешь что-то выполнять над чем-то, тебе об этом нужно хоть где-то сказать и предоставить "это" (в аргумента в методе или в конструкторе)
источник

NO

Nex Otaku in Yii Framework 3
Хорошо, при этом я смогу DI настроить так, чтобы он нужный не-дефолтный форматтер подсовывал, когда я обращаюсь к $timestamp->toString() (без параметров)?
источник

Д

Дмитрий in Yii Framework 3
да:
1. в конструкторе
2. через сеттер
источник

DS

Dmitriy S in Yii Framework 3
Вопрос по invoke(), если я туду передам Reference::to(MyClass::class), оно ж не заинжектится?
источник

Д

Дмитрий in Yii Framework 3
либо
Interface::class=>[
 '__construct()' => [
   $formatter
 ]
]

либо
Interface::class=>[
 'setFormatter()' => [
   $formatter
 ]
]

$formatter может быть либо объектом, либо ссылкой (DI\Reference)
источник

DS

Dmitriy S in Yii Framework 3
Я бы все таки для фабрики все параметры конструктора сделал только именованными. У инжектора совсем иная ситуация. В фабрике и конфиге котейнера аргументы заранее известны, а такой подход, как в инжекторе только путаницу создаст.
источник

DS

Dmitriy S in Yii Framework 3
@samdark, подумай над этим
источник

NO

Nex Otaku in Yii Framework 3
Дмитрий
да:
1. в конструкторе
2. через сеттер
Конструкторе чего? Сеттер кого?

Я хочу в бутстрапе приложения, например, сделать что-то вроде
$container->bind(TimestampFormatterInterface, MyCustomFormatter);

И чтобы таким образом всё приложение переключить на новый форматтер. Так можно будет сделать?
источник

Д

Дмитрий in Yii Framework 3
Nex Otaku
Конструкторе чего? Сеттер кого?

Я хочу в бутстрапе приложения, например, сделать что-то вроде
$container->bind(TimestampFormatterInterface, MyCustomFormatter);

И чтобы таким образом всё приложение переключить на новый форматтер. Так можно будет сделать?
можно. читай доку
источник

NO

Nex Otaku in Yii Framework 3
Я проверю )
источник

NO

Nex Otaku in Yii Framework 3
Потом напишу
источник

Д

Дмитрий in Yii Framework 3
Конструкторе чего? Сеттер кого?
того объекта, который ты конфигурируешь. в твоем случае объект Timestamp
источник

Д

Дмитрий in Yii Framework 3
Nex Otaku
Конструкторе чего? Сеттер кого?

Я хочу в бутстрапе приложения, например, сделать что-то вроде
$container->bind(TimestampFormatterInterface, MyCustomFormatter);

И чтобы таким образом всё приложение переключить на новый форматтер. Так можно будет сделать?
только теперь нет понятия "бутстрап приложения"
если есть об этом дока, то ее тоже почитай)
источник

AM

Alexander Makarov in Yii Framework 3
Dmitriy S
Вопрос по invoke(), если я туду передам Reference::to(MyClass::class), оно ж не заинжектится?
Нет.
источник

AM

Alexander Makarov in Yii Framework 3
Dmitriy S
Я бы все таки для фабрики все параметры конструктора сделал только именованными. У инжектора совсем иная ситуация. В фабрике и конфиге котейнера аргументы заранее известны, а такой подход, как в инжекторе только путаницу создаст.
В смысле требовать всегда имена?
источник

AM

Alexander Makarov in Yii Framework 3
Дмитрий
только теперь нет понятия "бутстрап приложения"
если есть об этом дока, то ее тоже почитай)
Есть.
источник

DS

Dmitriy S in Yii Framework 3
Ну да, я в принципе сделал как в инжекторе, но мне не нра. Референс только по номеру индекса, потому как в фабрике референс нужен
источник

DS

Dmitriy S in Yii Framework 3
По факту параметры там нужны для конкретного класса только, ибо для остального они не имеют смысла
источник