PHP中的命名空間是解決因具有相同的類別或方法而導致程式碼衝突的方法。透過使用namespace指令將PHP代碼放入命名空間中。這樣要呼叫類別時,自然要先呼叫命名空間
當我們寫PHP程式時,會發現因為具有一個相同名稱的類別或方法,而使程式將失敗。但透過PHP中的命名空間可以幫助我們解決程式碼衝突問題,接下來在文章中將會和大家具體介紹如何使用命名空間代碼
##【推薦課程:PHP教學】
#以下範例中有兩個文件,一個Demo.php,一個index.php,兩個檔案處於同級目錄下;Demo.php檔案中書寫命名空間以及Demo類,index.php呼叫Demo.php中的Demo類別;如下範例中的「輸出結果」即表示瀏覽器存取index.php。Demo.php檔案程式碼
<?php namespace DemoNameSpace; 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__魔法常數;「它包含目前命名空間名稱的字串。在全域的,不包含在任何命名空間中的程式碼,它包含一個空的字串。」
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中的命名空間是什麼】
#
以上是如何使用PHP中的命名空間的詳細內容。更多資訊請關注PHP中文網其他相關文章!