我对命名空间很新(是的,我已经阅读了PHP文档命名空间部分).我想知道命名空间的范围与多个文件有关.当我在具有全局代码的文件中包含或要求该文件时,名称空间是否有效超出一个文件?此外,这对全局代码有何影响?我是否会被迫使用全局代码更改语法.
例如,假设我有文件A.php.我希望能拥有的是:
namespace A;
class Abc { ... }
Run Code Online (Sandbox Code Playgroud)
然后让我说我有一些带有全局代码的文件,称之为main.php:
include("A.php");
class Abc { ... }
$abc = new Abc(); // Should be global Abc, right?
$abcFromNameSpace = new A\Abc(); // Should be namespace Abc, right?
...
Run Code Online (Sandbox Code Playgroud)
作为一个后续问题,我还想知道如果我要将名称空间包含在具有命名空间的另一个文件中的文件范围内会发生什么,而不是上面的示例,其中main.php只有全局代码.这会是这样的:
namespace A;
class Abc { ... }
Run Code Online (Sandbox Code Playgroud)
然后让我说我有一些带有全局代码的文件,称之为B.php:
namespace B;
include("A.php");
class Abc { ... }
$abc = new B\Abc(); // Should be namepsace B Abc, right?
$abcFromNameSpace = new A\Abc(); // Should be namespace A Abc, right?
Run Code Online (Sandbox Code Playgroud) 我一直在阅读有关如何确定IP是IPv4还是IPv6的问题,而且我觉得需要注意的是是否存在冒号.但是,您具有IPv4映射的IPv6地址和IPv4兼容的IPv6地址.在我看来,这些类型的地址都有冒号和句点,所以不是寻找::ffff字符串开头是否没有的解决方案,为什么不这样做:
function isIPv6($ip) {
if(strpos($ip, ":") !== false && strpos($ip, ".") === false) {
return true;
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
编辑:我错过了什么或者这个功能在所有情况下都能正常工作吗?