-
-
Notifications
You must be signed in to change notification settings - Fork 9.7k
Future compatibility with function autoloading #58030
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
Conversation
While working on an RFC (https://wiki.php.net/rfc/function_autoloading4), I discovered that Symfony registers an autoloader that accepts two arguments. But an autoloader should never accept a second argument for the current implementation, and the implementation may change.
Hey! I see that this is your first PR. That is great! Welcome! Symfony has a contribution guide which I suggest you to read. In short:
Review the GitHub status checks of your pull request and try to solve the reported issues. If some tests are failing, try to see if they are failing because of this change. When two Symfony core team members approve this change, it will be merged and you will become an official Symfony contributor! I am going to sit back now and wait for the reviews. Cheers! Carsonbot |
This comment has been minimized.
This comment has been minimized.
src/Symfony/Component/Config/Resource/ClassExistenceResource.php
Outdated
Show resolved
Hide resolved
Co-authored-by: Christophe Coevoet <[email protected]>
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.
Is it something we want to do in 5.4 instead?
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.
This likely breaks stack trace inspection latter in the method. I'd suggest waiting for the linked RFC to be accepted before merging. The current usage is fine for the moment.
throw new \ReflectionException($exists[1]); | ||
} | ||
} elseif ([false, null] === $exists = [$loaded, null]) { | ||
$thrower = fn(string $name) => self::throwOnRequiredClass($name); |
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.
$thrower = fn(string $name) => self::throwOnRequiredClass($name); | |
$thrower = static fn ($class) => self::throwOnRequiredClass($class); |
Let me close for now. |
Given that we can currently be certain that PHP won't pass a second argument to the autoloader, I don't see a problem to register a method as autoloader that takes an optional second argument. The change proposed in the RFC breaks backwards compatibility. That should be taken into consideration when discussing and refining the RFC. |
While working on an RFC (https://wiki.php.net/rfc/function_autoloading4) for function autoloading, I discovered that Symfony registers an autoloader that accepts two arguments. But an autoloader should never accept a second argument for the current implementation, and the implementation may change.