我們的例子分成兩個檔案,第一個檔案 name01.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | <?php namespace Name01; const DEMO = 1; function demo() { return 2; } class Demo { static function do_something() { return 3; } } /* 《程式語言教學誌》的範例程式 檔名:name01.php 功能:示範 PHP 程式 作者:張凱慶 時間:西元 2013 年 2 月 */ ?> |
定義命名空間空間用關鍵字 (keyword) namespace ,然後用反斜線隔開數個名稱,一個反斜線就代表一層
2 | namespace Name01; |
namespace 必須放在單獨的 .php 檔案中,而且要放在 <?php 的後面,若是嵌入在 HTML 文件裡會發生解譯錯誤。
我們在相同目錄(資料夾)的 name02.php 示範如何使用 Name01 定義的名稱,首先,當然是要 include name01.php 囉
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | <?php include 'name01.php' ; const DEMO = 4; function demo() { return 5; } class Demo { static function do_something() { return 6; } } echo demo() . "\n" ; echo Demo::do_something() . "\n" ; echo DEMO . "\n" ; echo Name01\demo() . "\n" ; echo Name01\Demo::do_something() . "\n" ; echo Name01\DEMO . "\n" ; echo \Name01\demo() . "\n" ; echo \Name01\Demo::do_something() . "\n" ; echo \Name01\DEMO; /* 《程式語言教學誌》的範例程式 檔名:name02.php 功能:示範 PHP 程式 作者:張凱慶 時間:西元 2013 年 2 月 */ ?> |
name02.php 定義的名稱可直接使用
16 17 18 | echo demo() . "\n" ; echo Demo::do_something() . "\n" ; echo DEMO . "\n" ; |
若是使用 Name01 ,就必須加上 Name01 與反斜線
20 21 22 | echo Name01\demo() . "\n" ; echo Name01\Demo::do_something() . "\n" ; echo Name01\DEMO . "\n" ; |
單一反斜線為最上層的命名空間,因此全名是
24 25 26 | echo \Name01\demo() . "\n" ; echo \Name01\Demo::do_something() . "\n" ; echo \Name01\DEMO; |
執行結果如下

中英文術語對照 | |
---|---|
命名空間 | namespace |
識別字 | identifier |
關鍵字 | keyword |
您可以繼續參考
命名空間
相關目錄
回 PHP 快速導覽
回 PHP 教材
回首頁
參考資料
http://www.php.net/manual/en/language.namespaces.rationale.php
http://www.php.net/manual/en/language.namespaces.definition.php
http://www.php.net/manual/en/language.namespaces.nested.php
http://www.php.net/manual/en/language.namespaces.definitionmultiple.php
http://www.php.net/manual/en/language.namespaces.basics.php
http://www.php.net/manual/en/language.namespaces.importing.php
http://www.php.net/manual/en/language.namespaces.global.php
http://www.php.net/manual/en/language.namespaces.fallback.php
http://www.php.net/manual/en/language.namespaces.rules.php
http://www.php.net/manual/en/language.namespaces.faq.php
沒有留言:
張貼留言