> On 24 Nov 2023, at 01:09, Rowan Tommins <rowan.coll...@gmail.com> wrote:
>
> On Thu, 23 Nov 2023 at 14:20, Stephen Reay <php-li...@koalephant.com> wrote:
>
>>
>> Out of the box, with no package manager or module loader or anything, you
>> can do as little as call `spl_autoload_register` with no arguments, and
>> have working class autoloading.
>>
>
>
> Sure, it's just about possible that you could paste that one line into each
> of your PHP files, and they'd all pick up the right classes. But it's more
> likely that you have some shared include called "startup.php",
> "boostrap.php", "header.php", etc, which has that line plus a bunch of
> other setup. So, the argument goes that adding a line "require
> 'namespace_foo_functions.php';" to that shared include isn't that big a
> problem.
>
> (If it happens you are using Composer, the files and config are listed in a
> JSON file rather than a PHP one, and Composer generates the shared include,
> but the logic's basically the same.)
>
> The strongest counter-argument, I think, is that it *scales* badly: once
> you have more than a handful of such include files, an autoloader solution
> becomes more attractive than listing all the files.
>
I think attractive is the wrong word here, but yes in general the issue is that
it becomes a developer overhead as the number and location of files increases,
particularly if you want to keep the files organised in the filesystem in a
similar fashion to classes (i.e. namespaces mapping to directory names).
> However, in itself that's not an argument for static classes; it's an
> argument for function autoloading; the argument for static classes needs to
> be either:
>
> - "admit it, we're never going to get function autoloading";
> - or "I'd want this even if we had function autoloading" (in which case the
> discussion of require vs autoloading becomes irrelevant).
>
I couldn't agree more - like I said at the start: I have no dog in this
particular race about static classes, my only concern is the continued use of
Composer as a flimsy argument about why features aren't required.
Cheers
Stephen
> Regards,
> --
> Rowan Tommins
> [IMSoP]
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: https://www.php.net/unsub.php