據個人理解,用到所需要的類時,需要先require或include引入,所以會發生類重定義的錯誤的前提是:兩個相同命名的類都有被引入。目前有些php框架會自動加載(即include)所有新建的model類,所以爲了避免你新建的model類和項目框架原生的核心類發生重名衝突,採用了namespace。
<?php
namespace a\b;
class Box{
public function get_Userinfo(){
echo "this is A";
}
}
這個爲B.php文件
<?php
namespace a\c;
class Box{
public function get_Userinfo(){
echo "this is B";
}
}
兩個類名相同則使用不同的命名空間,並使用use用於縮短命名空間
require_once("./A.php");
require_once("./B.php");
use a\b\Box;
use a\c\Box as BBox;
$a = new Box();
$a->get_Userinfo();
echo "<br/>";
$b = new BBox();
$b->get_Userinfo();
沒有定義命名空間,就理解爲使用頂級命名空間。new類時,可以在類前加上反斜槓\,也可以不加。
<?php
class Box{
public function get_Userinfo(){
echo "this is C";
}
}
<?php
c = new \Box();
$c->get_Userinfo();