-
-
Notifications
You must be signed in to change notification settings - Fork 20
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
PHP 8 union types, [presumably same for 8.1 intersection types]. #52
Comments
This is kinda like a PHP 8.0 feature request. PHP 8.1 will have similar problems with intersection types. I think that digging for |
I see and thanks for your swift reply. Would you like me to modify this issue's format into that of a feature request, create a new issue for this matter, or are there some other steps I should take? |
IMO just PR if you do any work on supporting union or intersection types 😁 |
What I can imagine the logic to be:
|
Checking the type compatibility will add significant runtime cost. Intersection types will most likely be a combination of interfaces. Multiple classes are mutually exclusive. To achieve this each injection candidate must be fetched from the DIC which will not only increase the runtime cost further, it may also produce unwanted/unexpected instanciations. For the sake of simplicity I'd suggest the following:
|
Bug Report
Summary
When trying to create an object that depends on a union type in its constructor, a call to
Injector::create()
results in an error.Current behavior
The
Injector::class
forwards theresolveParameters()
call to theDependencyResolver::resolveParameters()
method, which, at L#280 makes a call to Parameter::getType(). Within this method, a call is made to the underlying object'sReflectionParameter::getType()
method is made. The returned object bygetType()
is a ReflectionUnionType::class, which has no methodgetName()
defined, and hence, it crashes the program due to L#63.The error message:
Error: Call to undefined method ReflectionUnionType::getName()
How to reproduce
Settings:
PHP 8.0.19 (cli)
Class definition:
Test case:
Expected behavior
An instance of
Foo::class
constructed with the property$s
set to the string value'Hello, World'
.PS
I am sorry if this is not considered a bug, but I did not know where to otherwise post this matter. Please let me know what you think of the above stated.
The text was updated successfully, but these errors were encountered: