一、namespace命名空間
1、what?
php 5.3之后添加的新特性,用于表明一個文件的范圍
2.why?
為了解決在同一個文件引入多個文件時,類名重復報錯問題。比如,test_1.php里有個test類,test_2.php文件里也有一個test類,如果一個文件同時引入了這兩個文件時,在PHP 5.2版本以前就會報錯,那么,大家的做法就是把相應重名類改為不重名類,方可使用,但是一旦項目非常大,文件非常多的時候,顯然是這不利于管理的,于是引入了namespace這個概念,用來圈定相同名字的類屬于不同的區域。
3.example?
場景一:未使用namespace
#demo/test_1/test_1.php
<?php
class test{
????? public function test() {
??????????? echo __METHOD__;
????? }
}
#demo/test_2/test_2.php
<?php
class test{
?????? public function test() {
? ? ? ? ? ? echo __METHOD__;
??????? }
}
#demo/demo.php
<?php
include 'test_1.php';
include 'test_2.php';
###報錯:Cannot redeclare class test inD:\project\demo\test_2\test_2.phpon line2
#對test_1.php 和test_2.php分別添加命名空間:
namespace test_1;
namespace test_2;
#再訪問demo.php就不會報錯了,因為重名的test類已經分屬于兩個不同的區域了
#那么,如何使用命名空間?在demo.php 中添加如下代碼:
$test_1 = new test_1\test();
echo $test_1->test();
echo '<br>';
$test_2 = new test_2\test();
echo $test_2->test();
#在demo文件中想要使用帶有命名空間的文件時,必須是??? “命名空間\類”?? 這樣去使用