-
Notifications
You must be signed in to change notification settings - Fork 408
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 named arguments support #548
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
So I see what you're doing here and I think it's great for the future version of Flight, but it breaks the 7.4 compatibility even for just unit testing. Because most of my machines are configured for 7.4 (because of the LTS support), I couldn't actually pass unit tests anymore if this change was merged in. I'd have to always manually skip that class, which is kind of defeating the point of having that unit test.
The other thing with the Flight::path() change. I know you had mentioned in the past to get rid of the comments and actually build static methods for each of them, and I guess we can do that, but all the methods would just be return self::$app->whatever()
or like you put with static::__callStatic('whatever')
and seem like a lot of duplicated code, to just add some comments.
Ok to start the tests for php 8 are excluded from the main suite, I run the tests of that specific class by hand |
Calling the app directly instead of __callStatic does make sense because it would help the static analyzer |
I have several ideas to solve it but I don't know how difficult it is to implement it and keep everything working as is.
|
…t adding explicitly
I feel that the PR has covered something else related to the container, but I felt that I should fix it before dealing with other things. |
Changes about the container BeforeIf you install a psr11 compatible container, and pass it to For example previously $container = new Container;
$container->set(DatetimeImmutable::class, fn() => new DatetimeImmutable);
Flight::registerContainerHandler($container);
// later in some controller
function __construct(DatetimeImmutable $dt) {} Works. Only because you previously registered that class
Note But previously fails, the solution to use that automagically class resolution was But now: After (using
|
PHP named arguments helps in some situations for cleaned code, it locks library maintainers to not change the argument names so easily without breaking changes, but php 8 must have support too...