1

在这种情况下使用命名空间是完全清楚的,我创建了一个名为 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 的全局类,我想我应该在使用我的代码之前使用 use 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");

我在错误地解释什么?谢谢你

4

2 回答 2

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);
于 2013-10-20T11:16:21.550 回答
0

您正在创建命名空间NamespaceTesting,而不是ArrayObject因此需要这样调用它(使用命名空间

use NamespaceTesting;

如果你想使用内置的 ArrayObject 类..你需要在它前面加上一个斜杠

$a = new \ArrayObject("test");
于 2013-10-20T10:51:19.267 回答