PHP命令空間namespace及use的用法實踐總結
阿新 • • 發佈:2018-08-02
方便 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 語句,像下面這樣
- <?php
- /** classes/my/foo/MyClass.php */
- namespace my::foo;
- class MyClass {}//定義一個類
- // 當然,也可以定義函數和常量
- function myFunc() { }
- const MY_CONST = ‘foo’;
- ?>
有多種方法來訪問
- <?php
- /** test.php */
- include(‘classes/my/foo/MyClass.php’);
- // 可以隨時通過完整的名稱來訪問一個類
- $foo = new my::foo::MyClass();
- // 還可以使用use語句來導入一個命名空間
- use my::foo;
- // 然後,通過foo來引用 my::foo這個命名空間
- $foo = new foo::MyClass();
- // 也可以只導入一個類
- use my::foo::MyClass;
- $foo = new MyClass;
- // 可以為命名空間或者命名空間中的類創建別名
- use my::foo as MyFoo;
- use my::foo::MyClass as MyFooClass;
- $foo = new MyFoo::MyClass();
- $foo = new MyFooClass();
- // 註意, 下面的兩種寫法是等價的:
- use my::foo;
- use my::foo as foo;
- // 也可以用同樣的方法來訪問函數和常量
- my::foo::myFunc();
- myFoo::myFunc();
- my::foo::MY_CONST;
- myFoo::MY_CONST;
- ?>
use 語句只能導入命名空間和類,下面這種寫法就不行: use my::foo::MY_CONST;。一個use語句的有效範圍是從它被定義開始直到文件的結尾,你可以在全局範圍內任何地方使用它。 你可以在多個文件中使用相同的命名空間。但是一個文件只應該包含一個命名空間 (這一行為可能會在最終版本中被改變,也可能用package來替換namespace關鍵字 :))。 盡管不能import一個函數或者常量, 但是仍然可以使用一些前綴來從命名空間中訪問他們。在PHP 5.3的早期版本中,import 關鍵字被用來代替 use, 現在這一點已經被改變
PHP命令空間namespace及use的用法實踐總結