命名空间的引入

1.为命名空间名称使用别名

即在命名空间中引入其他的命名空间,使用use操作符实现。

引入其他的命名空间后,使用只需在元素前面加上子命名空间的前缀即可,无需写上引入的全部空间名称

[php]  view plain  copy
  1. namespace app1\pro1\item1;   
  2. header("content-type:text/html;charset=utf-8");  
  3. function func(){  
  4.     echo "func1";  
  5. }  
  6. const x = "name1";  
  7. class Fruit{  
  8.     public $a = '苹果1';  
  9.     static $b = '菠萝1';  
  10. }  
  11.   
  12. namespace app2\pro2\item2\topic2;  
  13. function func(){  
  14.     echo "func2";  
  15. }  
  16. const x = "name2";  
  17. class Fruit{  
  18.     public $a = '苹果2';  
  19.     static $b = '菠萝2';  
  20. }  
  21.   
  22. use app1\pro1\item1; //引入命名空间  
  23. item1\func(); //func1  
  24. echo item1\x; //name1  
  25. echo item1\Fruit::$b//菠萝1  
  26. $fruit = new item1\Fruit;  
  27. echo $fruit->a; //苹果1  

在命名空间app2\pro2\item2\topic2引入了命名空间app1\pro1\item1,使用时在元素前加上子空间名称item1

2.为类名称使用别名

类在php中广泛使用,php提供专门针对引入命名空间中类的方式。

[php]  view plain  copy
  1. namespace app1\pro1\item1;   
  2. header("content-type:text/html;charset=utf-8");  
  3. function func(){  
  4.     echo "func1";  
  5. }  
  6. const x = "name1";  
  7. class Fruit{  
  8.     public $a = '苹果1';  
  9.     static $b = '菠萝1';  
  10. }  
  11.   
  12. namespace app2\pro2\item2\topic2;  
  13. function func(){  
  14.     echo "func2";  
  15. }  
  16. const x = "name2";  
  17.   
  18. use app1\pro1\item1\Fruit; //引入命名空间中的类  
  19. func(); //func2  
  20. echo x; //name2  
  21. //使用引入的命名空间的类元素  
  22. echo Fruit::$b//菠萝1  
  23. $fruit = new Fruit;  
  24. echo $fruit->a; //苹果1  
在命名空间app1\pro1\item1中定义了类Fruit, 在命名空间app2\pro2\item2\topic2中引入了上一个命名空间的类后, 可以直接调用类元素

3.公共命名空间中引入其他命名空间

php中未定义命名空间的元素所在的空间为公共命名空间,公共命名空间引入其他命名空间的方式为include(),括号内填写路径

未明确前缀的调用将在当前空间寻找该元素,找不到再在命名空间找,再找不到就会报错;

单个\前缀访问公共命名空间中的func()函数;

使用引入的命名空间的元素,使用完全限定名称

举例说明:

定义一个test1.php文件,内容如下:

[php]  view plain  copy
  1. namespace app1\pro1\item1;  
  2. header("content-type:text/html;charset=utf-8");  
  3. function func(){  
  4.     echo "func1";  
  5. }  
  6. const x = "name1";  
  7. class Fruit {  
  8.     public $a = "苹果1";  
  9.     static $b = "菠萝1";  
  10. }  

在同级目录下新建一个test.php文件,引入test1.php:

[php]  view plain  copy
  1. header("content-type:text/html;charset=utf-8");  
  2. function func(){  
  3.     echo "func";  
  4. }  
  5. const x = "name";  
  6. class Fruit{  
  7.     public $a = "苹果";  
  8.     static $b = "菠萝";  
  9. }  
  10. include("./test1.php");  
  11. func(); //func   
  12. \func(); //func   
  13. \app1\pro1\item1\func(); //func1  
  14.   
  15.   
  16. echo x; //name  
  17. echo \x; //name  
  18. echo \app1\pro1\item1\x; //name1  
  19.   
  20.   
  21. echo Fruit::$b//菠萝  
  22. $fruit = new Fruit;  
  23. echo $fruit->a; //苹果  
  24.   
  25.   
  26. echo \app1\pro1\item1\Fruit::$b//菠萝1  
  27. $fruit1 = new \app1\pro1\item1\Fruit;  
  28. echo $fruit1->a; //苹果1  

你可能感兴趣的:(thinkphp)