Hi all, > On Jun 17, 2026, at 09:47, Rowan Tommins [IMSoP] <[email protected]> wrote: > > On 17 June 2026 11:03:07 BST, Anton Smirnov <[email protected]> wrote: >> Imagine we have an old guzzle/psr7 with stream_for function, and they use it >> without a qualifier. I defined a global stream_for so now I hijacked the >> internal library logic. Is it correct? >> >> The previous attempt with namespace pinning made more sense to me > > > The concern that occurred to me is similar: if I rely on function > autoloading, but forget to fully-qualify a name in the current namespace, it > would accidentally work as long as some other code triggered loading of that > function first. Then some small refactoring - or even a different path > through the code at runtime - and it will silently fall back to a function in > the global namespace instead. > > I think if autoloading is going to require some extra "ceremony" in the code, > it would be preferable to have a declare() at the top of the file forcing the > interpretation of all unqualified names (either "always assume current > namespace" or "always assume global namespace"). That way, code would not > change behaviour based on hard-to-predict side effects elsewhere.
Theodore Brown mentioned something like that as well in <https://externals.io/message/105757>. Please see the following PR against my own branch to see what it would look like if added to the function-autoloading (mark 5) branch. https://github.com/pmjones/php-src/pull/1 Hypothetically this could be its own separate, precursor RFC and PR, but it's small enough it might go well here. Thoughts? -- pmj
