Scott, On Fri, Dec 4, 2015 at 11:26 AM, Scott Arciszewski <sc...@paragonie.com> wrote: > Hi, > > It has been brought to my attention that my consistent use of \ prefixing > of global functions is an eyesore, but I've got a simple little PoC that > shows why I do it, and now I'm wondering if the behavior I'm working around > should qualify as a PHP bug? > > https://3v4l.org/po925 > > Scott Arciszewski > Chief Development Officer > Paragon Initiative Enterprises <https://paragonie.com>
It's not a bug. It's explicit. The `\` prefix says it's a global function. The non-prefixed looks in the current namespace and then falls back to global. Also, in PHP 5.6+ you can do something slightly different to achieve the same result: use function. namespace Foo { use function random_int; var_dump(random_int(1, 100)); var_dump(\random_int(1, 100)); } That will always behave the same no matter if someone defines a namespace-specific random_int function, it will always use the global version. https://3v4l.org/cR6Gg This actually opens a pretty interesting edge-case, where you can define a function in the namespace and use the global one without needing a "\". namespace Foo { use function strlen; function strlen(string $str) : int { return strlen($str) + 1; } } That actually is not recursive. This is a bit non-obvious, but completely follows the rules set forth. So I don't think there's a bug (though we may want to raise a notice in that collision case)... Anthony -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php