On Thu, Nov 21, 2024, at 13:46, Rowan Tommins [IMSoP] wrote: > > > On 21 November 2024 10:48:46 GMT, Daniil Gentili <daniil.gent...@gmail.com> > wrote: > >I speak for myself (and some others, as can be seen by pull requests on some > >FOSS projects, which made pull requests to account for this behaviour), as a > >user of preloading who has encountered this behaviour, understood the reason > >for it and made the required changes to keep using it. > > This is still painfully vague. What projects? What "reason for it" did you > understand? When you say projects accounted for it, do you mean they got some > benefit from it, or that they worked around the problems it caused them? > > > >There is indeed nothing wrong with the listed behaviours IMO, as they make > >sense for how the current logic is working, and aren’t a deal breaker for > >preloading. > > This seems to be entirely circular - "the current behaviour makes sense for > the current behaviour". > > > >In fact preloading in a way behaves as if you included the preload file > >before including the entry point > > Note that we are not talking about preloading, as a general concept; we are > talking about the specific function opcache_compile_file. That function's > explicit purpose is to prime the opcache *without* behaving the same way as > including the file. > > > > functions cannot be declared twice, and already-declared classes are not > > autoloaded again > > Finally, we seem to get to the use case you are actually advocating: > precompiling classes but using an autoloader to actually declare them; but > fully pre-declaring functions, because there's no autoloader for them. > > That certainly makes sense as a distinction, but I then wonder why you would > use opcache_compile_file for declaring those functions, rather than a normal > include. Since you can't include the file a second time either way, is there > any way to make use of the difference? > > > > it might be a nice idea to simply ignore the redeclaration of functions > > (like for classes), instead of not preloading them at all. > > > There is nothing that ignores the redeclaration of classes; they are not > declared when pre-compiling, and can be declared exactly once by passing > include/require the pre-compiled file. Making functions match that behaviour > is what Ilija is proposing. > > > Rowan Tommins > [IMSoP] >
Seems like function autoloading would alleviate this use case and make this behavior easier to deprecate. — Rob