1. 程式人生 > >PHP命令空間namespace及use的用法實踐總結

PHP命令空間namespace及use的用法實踐總結

方便 ive import names hid bsp pre admin 不同

看PHP中的命名空間和use

namespace app\admin\model;
use think\Model;
use think\Db;

綜上可以看出,命名空間就是相當於一個文件夾的路徑。

同一個命名空間下,不能有相同的類文件。

同名的類文件可以存在於不同的命名空間下面。

用了命名空間,可以方便的調用其他文件夾下的文件。

只需要通過using、import、use引入命名空間下的文件即可。

從5.3開始你可以使用命名空間來組織你的代碼了。 不同的命名空間內可以包含相同名字的類、函數以及常量。 聲明一個命名空間非常簡單,只需要在文件的開始處加上namespace 語句,像下面這樣

從5.3開始你可以使用命名空間來組織你的代碼了。 不同的命名空間內可以包含相同名字的類、函數以及常量。 聲明一個命名空間非常簡單,只需要在文件的開始處加上namespace 語句,像下面這樣


  1. <?php
  2. /** classes/my/foo/MyClass.php */
  3. namespace my::foo;
  4. class MyClass {}//定義一個類
  5. // 當然,也可以定義函數和常量
  6. function myFunc() { }
  7. const MY_CONST = ‘foo’;
  8. ?>

有多種方法來訪問

    1. <?php
    2. /** test.php */
    3. include(classes/my/foo/MyClass.php);
    4. // 可以隨時通過完整的名稱來訪問一個類
    5. $foo = new my::foo::MyClass();
    6. // 還可以使用use語句來導入一個命名空間
    7. use my::foo;
    8. // 然後,通過foo來引用 my::foo這個命名空間
    9. $foo = new foo::MyClass();
    10. // 也可以只導入一個類
    11. use my::foo::MyClass;
    12. $foo = new MyClass;
    13. // 可以為命名空間或者命名空間中的類創建別名
    14. use my::foo as MyFoo;
    15. use my::foo::MyClass as MyFooClass;
    16. $foo = new MyFoo::MyClass();
    17. $foo = new MyFooClass();
    18. // 註意, 下面的兩種寫法是等價的:
    19. use my::foo;
    20. use my::foo as foo;
    21. // 也可以用同樣的方法來訪問函數和常量
    22. my::foo::myFunc();
    23. myFoo::myFunc();
    24. my::foo::MY_CONST;
    25. myFoo::MY_CONST;
    26. ?>

use 語句只能導入命名空間和類,下面這種寫法就不行: use my::foo::MY_CONST;。一個use語句的有效範圍是從它被定義開始直到文件的結尾,你可以在全局範圍內任何地方使用它。 你可以在多個文件中使用相同的命名空間。但是一個文件只應該包含一個命名空間 (這一行為可能會在最終版本中被改變,也可能用package來替換namespace關鍵字 :))。 盡管不能import一個函數或者常量, 但是仍然可以使用一些前綴來從命名空間中訪問他們。在PHP 5.3的早期版本中,import 關鍵字被用來代替 use, 現在這一點已經被改變

PHP命令空間namespace及use的用法實踐總結