當我們寫PHP程序時,會發現因為具有一個相同名稱的類或方法,而使程序將失敗。但是通過PHP中的命名空間可以幫助我們解決代碼沖突問題,接下來在文章中將和大家具體介紹如何使用命名空間代碼
【推薦課程:PHP教程】
以下示例中有兩個文件,一個Demo.php,一個index.php,兩個文件處于同級目錄下;Demo.php文件中書寫命名空間以及Demo類,index.php調用Demo.php中的Demo類;如下示例中的“輸出結果”即表示瀏覽器訪問index.php。
Demo.php文件代碼
?phpnamespace DemoNameSpace;html' target='_blank'>class Demo { private $mysqlHandle; public function __construct() { echo This is namespace of PHP demo ,The Demo magic constant __NAMESPACE__ is .__NAMESPACE__;?
index.php文件代碼
?php include Demo.php use DemoNameSpace/Demo; $DemoObj = new Demo();?
輸出結果:
“This is namespace of PHP demo ,The Demo magic constant __NAMESPACE__ is DemoNameSpace”
以上示例的說明:Demo.php中有一個_NAMESPACE__魔法常量;“它包含當前命名空間名稱的字符串。在全局的,不包括在任何命名空間中的代碼,它包含一個空的字符串?!?/p>
Demo.php不做變動,改動index.php文件
?php include Demo.php $Demo = new Demo();?
輸出結果:
“Fatal error: Class Demo not found in F:/JJserver/demo/index.php on line 4”
這個是常見的“致命錯誤”信息了。按照常規的php編程思路,這里的輸出應該是跟上面的輸出結果是一致的,但這里它偏要來個致命錯誤。但是當我們去掉(或注釋掉)Demo.php文件中的:“namespace DemoNameSpace;”這個語句就正常了。這是咱們平常寫class以及調用class最常見的書寫方法。
總結:
對比使用namespace與不使用namespace的兩種輸出情況,并加入namespace的定義理解后,上述出現致命錯誤的情況就很好理解了。在Demo.php中定義了一個namespace,也就是命名空間后,接著定義了Demo類,然后這個Demo類就被歸并到了DemoNameSpace命名空間中去了,那么要調用這個Demo類時,自然要先調用這個DemoNameSpace命名空間了,也就是在index.php文件中使用“useDemoNameSpace/Demo”語句了
【相關推薦:PHP中的命名空間是什么】
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。
新聞熱點
疑難解答