On Sun, May 4, 2025, at 4:25 PM, Michael Morris wrote: > On Sun, May 4, 2025 at 5:19 PM Larry Garfield <la...@garfieldtech.com> wrote: >> On Sun, May 4, 2025, at 2:34 AM, Michael Morris wrote: >> > It's been 9 months. Been researching, working on other projects, >> > mulling over >> > points raised the last time I brought this up. And at the moment I >> > don't think >> > PHP 8.5 is in its final weeks so this isn't a distraction for that. >> > The >> > previous discussion got seriously, seriously derailed and I got lost >> > even though >> > I started it. I'm not going to ask anyone to dig into the archives, >> > let's just >> > start afresh. >> >> This proposal requires: >> >> 1. Every module author to change their coding structure >> 2. Every consumer of a package to change their coding structure >> 3. Devs to abandon "it just works" autoloading and explicitly import >> packages. >> 4. Abandoning 16 years of PSR-0/4 file convention in favor of "module = >> file", which will almost certainly result in multi-thousand-line files even >> for clean, well-factored code. > > You're 4 for 4 on falsehoods. Care to actually read what I wrote > because I know you're more intelligent and better than this and very > disappointed.
> PHP Code > ----------------------------------------------------------------------- > > namespace MyModule; > > yield function sum(a, b) { return a + b; } > > -------------------------------------------------------------------------------- Every module author changes their code. (Which is reasonable.) > PHP Code > ----------------------------------------------------------------------- > > use require 'mymodule.php'; > > echo MyModule::sum(3, 4); > -------------------------------------------------------------------------------- Every caller changes their code, to use `use require` and to use the pseudo-class syntax to call the function. > PHP Code > ----------------------------------------------------------------------- > > use sum require 'mymodule.php'; > > echo sum(3, 4); // 7 > -------------------------------------------------------------------------------- Removes the pseudo-class syntax, but still has the "use sum require..." change for the consumer. As described, the implication is that the millions of existing use Some\Class\Here; lines in code in the wild will... not work if the Some\Class package becomes a module? I think that's what's implied, but it's not clear. If that triggers autoloading, how does the autoloader know how to find it? It needs to know the module name, which as described is the file name of the module, not the class. Since the module name is the file name, that means if a module has 50 internal classes, it must be in the same file. Hence, giant files. If those reads of your post are inaccurate, then please show with examples how they are inaccurate, because that is how I understood your proposal text at face value. --Larry Garfield