在A的范围内,我是否可以在A \ B中引用一个名为C的类而不仅仅是C \?
答案 0 :(得分:1)
假设分别有名称空间A和A \ B.
没有A和B在里面。
在A的范围内,我可以在A \ B中引用一个名为C的类C 没有预先B \?
如果您在A \ B中,可以使用C
<?php
namespace A\B;
class C {}
可以在代码中访问,如:
<?php
namespace A;
$C = new B\C;
或
<?php
namespace A\B;
$C = new C;
但你不能跳过C而不让自动加载器知道B,因为它会在A中寻找一个叫C的类,但是C在B中。
<?php
namespace A;
$C = new C;
为什么命名空间中没有预先添加的全局指示符?例如) namespace \ A;
有,你不能这样做:
<?php
namespace A\B;
$C = new \A\B\C;
// but not
$C = new A\B\C;
如果你想要一个全局命名空间,你就不能这样做:
<?php
namespace;
或者
<?php
namespace \;
但你可以这样做:
<?php
namespace {
class A {}
}
这就像没有命名空间一样。
函数创建的范围与by之间的关系是什么 命名空间?
函数作用域与名称空间没有任何关系。
但是在命名空间中声明的函数位于命名空间中,只能通过其命名空间访问。
<?php
namespace A;
function B() {
echo 'Value B';
}
echo B();
// or
echo \A\B();
// this wont work
echo \B();