在这种情况下使用命名空间是完全清楚的,我创建了一个名为ArrayObject的新命名空间,我根据自己的需要使用该类。
namespace NamespaceTesting;
class ArrayObject{
public $initVal;
function __construct($a){
$this->initVal = $a;
}
public function append($unusedVal){
var_dump($this);
}
}
$a = new ArrayObject("test");
$a->append("unusedVal");
问题是,如果我想使用ArrayObject的全局类,我想我应该在之前使用使用ArrayObject 来使用我的代码,但它不起作用。怎么了?
namespace NamespaceTesting;
class ArrayObject{
public $initVal;
function __construct($a){
$this->initVal = $a;
}
public function append($unusedVal){
var_dump($this);
}
}
// this is not working
use ArrayObject;
$a = new ArrayObject("test");
$a->append("unusedVal");
我错误地解释了什么?谢谢
答案 0 :(得分:0)
您正在创建名称空间NamespaceTesting
而不是ArrayObject
因此需要像这样调用它(Using namespaces)
use NamespaceTesting;
如果要使用内置的ArrayObject类,则需要在其前面加斜杠
$a = new \ArrayObject("test");
答案 1 :(得分:0)
namespace NamespaceTesting;
class ArrayObject{
public $initVal;
function __construct($a){
$this->initVal = $a;
}
public function append($unusedVal){
var_dump($this);
}
}
// $a is an ArrayObject from global namespace, not from NamespaceTesting;
$a = new \ArrayObject();
$a->append("unusedVal");
var_dump($a);