rfc:fallback-to-root-scope-deprecation
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
rfc:fallback-to-root-scope-deprecation [2018/02/03 09:13] – wesnetmo | rfc:fallback-to-root-scope-deprecation [2018/02/03 16:26] (current) – wesnetmo | ||
---|---|---|---|
Line 22: | Line 22: | ||
===== Proposal ===== | ===== Proposal ===== | ||
- | This RFC proposes to deprecate the fallback to root scope, by emitting a '' | + | This RFC proposes to deprecate the fallback to root scope, by emitting a deprecation notice, e.g.: |
< | < | ||
Line 35: | Line 35: | ||
<code php> | <code php> | ||
// Fallback to global scope shim | // Fallback to global scope shim | ||
- | // This code simply | + | // This code simply |
- | register_autoloader( | + | // Note: this is just a non-binding PoC |
- | | + | autoload_register(AUTOLOAD_FUNCTION | AUTOLOAD_CONST, |
- | | + | // Assumes $namespaced is NOT prepended with \ |
- | + | // Assumes | |
- | $start = strrpos($QN, " | + | |
- | if($start === false){ return; } | + | // Find last occurrence of \ |
- | + | $offset | |
- | // e.g. " | + | |
- | $sourceNS | + | // Return if none; this is only active for namespaced symbols |
- | + | | |
- | // e.g. " | + | |
- | | + | // Fallback symbol' |
- | + | $fallback | |
- | | + | |
- | | + | // Alias the function |
- | | + | if($type & \AUTOLOAD_FUNCTION && |
- | | + | \function_alias($fallback, |
- | | + | |
- | namespace ' . $sourceNS . '; | + | |
- | function ' . $rootSymbol . ' | + | |
- | return | + | |
- | } | + | |
- | '); | + | |
- | }elseif( | + | |
- | ($type & AUTOLOAD_CONST) && | + | |
- | defined($rootSymbol) | + | |
- | ){ | + | |
- | eval(' | + | |
- | namespace ' . $sourceNS . '; | + | |
- | const ' . $rootSymbol . ' = \\' . $rootSymbol . '; | + | |
- | '); | + | |
- | } | + | |
} | } | ||
- | ); | + | |
+ | // Alias the constant | ||
+ | if($type & \AUTOLOAD_CONST && \defined($fallback /*, false [1] */)){ | ||
+ | \define($namespaced, | ||
+ | } | ||
+ | }); | ||
+ | |||
+ | // [1] = may not trigger autoloading from an autoloader | ||
</ | </ | ||
rfc/fallback-to-root-scope-deprecation.txt · Last modified: 2018/02/03 16:26 by wesnetmo