Autowiring a union typy v PHP 8

David Grudl
Nette Core | 8227
+
-1
-

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
+
+3
-

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
+
+2
-

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)