Autowiring a union typy v PHP 8
- David Grudl
- Nette Core | 8218
Měl by autowiring v nette/di nějak podporovat union typy? Např.
function __construct(Bar|Foo $arg)
{
}
Pokud bude k dispozici Bar, předá se Bar, pokud Foo, předá se Foo. Otázkou je, co když budou k dispozici oba objekty? PHP může v reflexi vrátit typy v jiném pořadí, takže se nedá sázet na prioritu.
Má to praktické využití?
Za sebe jsem takovou věc nikdy v životě nepotřeboval a vlastně by mě překvapilo, kdyby se to někomu k něčemu hodilo.
- Václav Pávek
- Backer | 100
V nette/di bych nepodporoval union typy. Od toho tu je interface či si mohu napsat své specifické DI rozšíření které mi union typy nahradí např. pomocí resolveru. DI bych držel co nejstriktnější.
- Michal Hlávka
- Člen | 190
Ja osobne nevidim duvod tohle vyuzivat. Bar|Foo
si muzu rozepsat
do dvou argumentu tak jak jsme zvykli ted. I kdyby se tohle nejak vyresilo,
musel bych stejne nejakym zpusobem proiterovat ten argument, abych ziskal dve
tridy a prijde mi to jako prace navic a to stejne plati pro pripad, kdybych
dostal jenom jednu tridu z tech dvou. Musel bych si overit co vlastne
v argumentu mam.
EDIT: Mimochodem ktera diskuze je preferovana? :) https://forum.nette.org/…typy-v-php-8
Editoval Michal Hlávka (3. 11. 2020 10:16)