namespace和use

一、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文件中想要使用帶有命名空間的文件時,必須是??? “命名空間\類”?? 這樣去使用








最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,915評論 18 139
  • PHP(一)基礎語法 本來就是學習筆記,就不說廢話了 參考 PHP 手冊陳惠貞 , 陳俊榮.PHP 7&MySQL...
    cndaqiang閱讀 1,107評論 1 1
  • 把當前目錄作為Root Document只需要這條命令即可:php -S localhost:3300 也可以指定...
    絢爛的時光閱讀 745評論 0 1
  • 個人學習批處理的初衷來源于實際工作;在某個迭代版本有個BS(安卓手游模擬器)大需求,從而在測試過程中就重復涉及到...
    Luckykailiu閱讀 4,779評論 0 11
  • PHP7 已經出來1年了,PHP7.1也即將和大家見面,這么多好的特性,好的方法,為什么不使用呢,也希望PHP越來...
    夢幻_78af閱讀 2,127評論 1 10