1.为命名空间名称使用别名
即在命名空间中引入其他的命名空间,使用use操作符实现。
引入其他的命名空间后,使用只需在元素前面加上子命名空间的前缀即可,无需写上引入的全部空间名称
- <?php
- namespace app1\pro1\item1;
- header("content-type:text/html;charset=utf-8");
- function func(){
- echo "func1";
- }
- const x = "name1";
- class Fruit{
- public $a = '苹果1';
- static $b = '菠萝1';
- }
- namespace app2\pro2\item2\topic2;
- function func(){
- echo "func2";
- }
- const x = "name2";
- class Fruit{
- public $a = '苹果2';
- static $b = '菠萝2';
- }
- use app1\pro1\item1; //引入命名空间
- item1\func(); //func1
- echo item1\x; //name1
- echo item1\Fruit::$b; //菠萝1
- $fruit = new item1\Fruit;
- echo $fruit->a; //苹果1
在命名空间app2\pro2\item2\topic2引入了命名空间app1\pro1\item1,使用时在元素前加上子空间名称item1
2.为类名称使用别名
类在php中广泛使用,php提供专门针对引入命名空间中类的方式。
- <?php
- namespace app1\pro1\item1;
- header("content-type:text/html;charset=utf-8");
- function func(){
- echo "func1";
- }
- const x = "name1";
- class Fruit{
- public $a = '苹果1';
- static $b = '菠萝1';
- }
- namespace app2\pro2\item2\topic2;
- function func(){
- echo "func2";
- }
- const x = "name2";
- use app1\pro1\item1\Fruit; //引入命名空间中的类
- func(); //func2
- echo x; //name2
- //使用引入的命名空间的类元素
- echo Fruit::$b; //菠萝1
- $fruit = new Fruit;
- echo $fruit->a; //苹果1
3.公共命名空间中引入其他命名空间
php中未定义命名空间的元素所在的空间为公共命名空间,公共命名空间引入其他命名空间的方式为include(),括号内填写路径。
未明确前缀的调用将在当前空间寻找该元素,找不到再在命名空间找,再找不到就会报错;
单个\前缀访问公共命名空间中的func()函数;
使用引入的命名空间的元素,使用完全限定名称
举例说明:
定义一个test1.php文件,内容如下:
- <?php
- namespace app1\pro1\item1;
- header("content-type:text/html;charset=utf-8");
- function func(){
- echo "func1";
- }
- const x = "name1";
- class Fruit {
- public $a = "苹果1";
- static $b = "菠萝1";
- }
在同级目录下新建一个test.php文件,引入test1.php:
- <?php
- header("content-type:text/html;charset=utf-8");
- function func(){
- echo "func";
- }
- const x = "name";
- class Fruit{
- public $a = "苹果";
- static $b = "菠萝";
- }
- include("./test1.php");
- func(); //func
- \func(); //func
- \app1\pro1\item1\func(); //func1
- echo x; //name
- echo \x; //name
- echo \app1\pro1\item1\x; //name1
- echo Fruit::$b; //菠萝
- $fruit = new Fruit;
- echo $fruit->a; //苹果
- echo \app1\pro1\item1\Fruit::$b; //菠萝1
- $fruit1 = new \app1\pro1\item1\Fruit;
- echo $fruit1->a; //苹果1