> On 23 Nov 2023, at 17:21, Rowan Tommins <rowan.coll...@gmail.com> wrote:
> 
> On Thu, 23 Nov 2023 at 06:00, Stephen Reay <php-li...@koalephant.com> wrote:
> 
>> I'm disappointed to see yet again that there's this implied notion that
>> working with PHP in 2023 means "well surely you must be using composer",
>> which leads to "but composer..."  somehow being an accepted argument when
>> it comes to missing/incomplete builtin functionality.
>> 
> 
> 
> While I appreciate your point in the general case, in this particular
> thread, the mentions of Composer are really just examples, or can be
> reworded that way:
> 
> Functions lack autoloading, but in practice this isn't a big problem
> because you can just require_once a file defining them, and as long as
> OpCache is running there's very little performance penalty. If you're using
> a package manager or module loading system to integrate multiple
> autoloaders, it's generally easy to add one or more required files as part
> of the package / module config - *for example* Composer has a "files" array
> in each package's "autoload" config.
> 
> So the actual assumption is "surely you must be using OpCache", which
> unlike Composer is bundled with PHP.
> 
> Regards,
> -- 
> Rowan Tommins
> [IMSoP]


(Resending from list-address)

Hi Rowan,

Respectively, I disagree that it's "not a big problem" if your goal is to 
encourage people to use regular functions over classes with static methods.

"No autoloading" is clearly a well known barrier to the use of userland 
functions, and "rewriting 'use composer' to 'use require_once'" isn't a 
comparable workaround, as evidenced by:

- https://wiki.php.net/rfc/core-autoloading (from April 2023) paragraph 2 says:

> The need for such a feature seems very clear as users will create “helper” 
> classes with static methods to take advantage of autoloading via the class 
> autoloading mechanism.

An email earlier in this thread makes the same point (shiny gold sticker if you 
remember who wrote this):

> The only issue being that we don't have good autoloading support for such 
> functions, and that's a whole different problem...



> you can just require_once a file defining them,

To paraphrase a certain secret agent: Do you want people writing faux-namespace 
classes? Because this is how you get people writing faux-namespace classes.


> So the actual assumption is


No, the assumption was very clearly written:

> Autoloading is frankly mostly solved by using the `files` block in your 
> composer.json's autoload config, and then you don't need to care.

Saying "a package loader" instead of "composer" isn't any better really. 
Autoloading of classes in PHP doesn't require a "package loader" to work. PHP 
ships with a built in class autoloader function, and pretending that using 
'require_once' everywhere a function is used, is just as easy for the developer 
seem disingenuous to be honest.



Cheers


Stephen

Reply via email to