Hi Greg, all,

For this reason, the only resolution that we should be considering is:

classes:
1) try ns::class
2) autoload ns::class
3) fail

functions/constants:
1) try ns::function/ns::const
2) try internal function/const
3) fail.

I see this as giving priority to library authors rather than the average PHP user. So here's another option - and if I mention the word INI, will y'all promise to read to the end before you shout at me?

We could have an INI_SYSTEM switch.

ns.lookup=Off

means you _have_ to prefix because otherwise resolution will fail with a fatal error, but

ns.lookup=On

means that anything not prefixed and not local goes through the full lookup, i.e. it does what is currently done outside a namespace context.

You'd switch ns.lookup off during development and on in production, and the default would be on. Prefixed elements would be found at the first try regardless of the setting, but would fail after a single check for a global value if the element is not found when the setting's off. Non-prefixed code would fail when the setting's off, but would otherwise get by except in cases of ambiguity (easily remedied with a '\'). It would, however, run slower and be more prone to conflict, particularly in complex sites or applications.

We make it very, very clear in the docs that prefixing is best practice, but at the same time we allow John Doe to import a couple of namespaced libraries without putting him through prefix hell.

What am I missing?

- Steph

--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to