[wp-trac] [WordPress Trac] #36335: Next generation: core autoloader proposal
WordPress Trac
noreply at wordpress.org
Thu Mar 31 17:30:01 UTC 2016
#36335: Next generation: core autoloader proposal
-----------------------------+-----------------------------
Reporter: dnaber-de | Owner:
Type: feature request | Status: new
Priority: normal | Milestone: Future Release
Component: General | Version:
Severity: normal | Resolution:
Keywords: | Focuses:
-----------------------------+-----------------------------
Comment (by giuseppe.mazzapica):
> Anyway, the major benefit of having an autoloader would be having a
consistent way for plugin authors and later talking about
dependency/package management. Because we're runing into a big issue with
inconsistent packages, when plugin authors keep on using composer and ship
their dependencies with their plugins. And they will.
Autoloader does not resolve the dependency/package management issue.
Actually, if autoloader is shared there are chances it causes even more
issues.
To give you an example, let's assume I have a plugin which has a
dependency to `AwesomeLibrary` in version '''1'''. And another plugin that
uses same library, but in version '''2'''.
If we have a shared autoloader, both plugins will somehow "register" a
rule in the shared autoloader to load the `AwesomeLibrary` class.
Assuming that the class is named in the same way in both versions (a very
reasonable assumption) which version of the file the autoloader have to
load when `new AwesomeLibrary()` is encountered in code?
This just to demonstrate that autoloader and dependencies are related
issues, but solving one does not necessarily solve (nor necessarily help
in solving) the other.
To bring you a real world example, Composer autoloader works very well as
a shared autoloader when Composer is used to manage the entire website,
because it has control on all the dependencies and so there's the warranty
only one version of each package is installed. In fact, it fails miserably
when different plugins ship different version of same library.
Moreover, a dependency/package management tool does not ''require'' an
autoloader: it's a convenience not a requirement.
For these reasons I think that having an autoloader would not facilitate
the dependency/package management discussion that much.
That said, I think an autoloader for core is a nice thing and pretty easy
to realize (surely easier than dependency/package management by far) and
if we focus on core autoloader there might be chance it will be done, as
some point.
However, I think to make core actually "autoloadable" is a priority in
that direction.
For example, consider the issue of files containing more classes. There
are two ways to solve it: 1) split the files; 2) write a complex
implementation capable to work in those cases.
If you go with the latter, and at some later point the file are split, you
wasted time and effort on create an unnecessary complex proof of concept
implementation. Wouldn't been better to start working on a proof of
concept ''after'' files were split or after the decision to not split the
file was taken?
--
Ticket URL: <https://core.trac.wordpress.org/ticket/36335#comment:12>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform
More information about the wp-trac
mailing list