Hi Mark,
On 06/04/2021 00:05, Mark Randall wrote:
* I expect 99.9999% of users will never know it exists, and it will
instead just be an option for tools like composer that will provide a
small transparent boost.
I wrote this as feedback in your early round (I don't think you
answered), and IMO it still stands:
//
The proposed API should really support
multiple maps. Composer has a prepend-autoloader option which controls
whether the generated autoloader will be prepended or appended when
spl_autoload_register is called. This is required in some cases where
multiple autoloaders coexist. So the ability to add multiple maps,
including optionally prepending them would be a must IMO. The ability to
remove an autoloader and its associated classmap would also be very
welcome so one can unregister things cleanly.
So taking the above in consideration, and keeping consistency with
existing spl_* functions in mind, I would propose an API more like:
autoload_register_classmap(array $map, bool $prepend = false)
autoload_unregister_classmap(array $map)
//
Given the current API proposal, I think I would vote no, because I do
not know how I'd even implement this in Composer without making a mess
in case multiple autoloaders co-exist (which one can not know about at
autoload generation time). We'd have to perhaps set the classmap on the
first autoloader, and if a second autoloader gets created it'd wipe the
classmap entirely and skip the optimization for safety because it
becomes unmanageable otherwise.
* It provides a very minor benefit to debugging as you get to skip
over the autoloading frames which so very often come up during a request.
In development environment we do not recommend using an optimized
autoloader as it slows down updates/installs and doesn't bring a ton of
perf benefit, so this argument isn't that strong.
Best,
Jordi
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: https://www.php.net/unsub.php