当前位置:首页 > PHP教程 > php高级应用 > 列表

php中命名空间namespace用法介绍

发布:smiling 来源: PHP粉丝网  添加日期:2015-05-09 09:44:58 浏览: 评论:0 

PHP的命名空间(namespace)是php5.3之后才有的之前学习php所以没有这个东西了,最近用到了php命名空间了,下面我们一起来看看命名空间namespace用法

现在说这个,感觉有点过时了,但是感觉用namespace的人还是不多,估计还是因为不习惯吧。

class把一个一个function组织起来,namespace可以理解成把一个一个class,function等有序的组织起来。个人觉得,namespace的主要优势有

第一,可以更好的管理代码

第二,文件一多,可以避免class,function的重名

第三,代码可读性增强了

1,定义namespace

  1. namespace userCenter;
  2. //php代码  
  3. namespace userCenter\register;
  4. //php代码    
  5.  
  6. namespace userCenter\login {
  7.  //php代码 

命名空间不能嵌套或在同一代码处声明多次(只有最后一次会被识别),但是,你能在同一个文件中定义多个命名空间化的代码,比较合适的做法是每个文件定义一个命名空间,可以是相同命名空间.

2,调用namespace

  1. \userCenter\register; //绝对调用   
  2. userCenter\login; //相对调用   
  3. use userCenter\register; //引用空间   
  4. use userCenter\register as reg; //引用空间并加别名   

3,实例说明,login.class.php

  1. <?php
  2.  
  3. namespace userCenter; 
  4.  
  5. function check_username(){   
  6.  
  7.  echo "login OK<br>";   
  8.  
  9. }   
  10.  
  11. class login{   
  12.  
  13.  public function save(){   
  14.  
  15.  echo "login had saved<br>";   
  16.  
  17.  }   
  18.  
  19. }   
  20.  
  21. ?> 

regist.class.php

  1. <?php   
  2.  
  3. namespace userCenter\regist   
  4.  
  5. {   
  6.  
  7.  function check_username() {   
  8.  
  9.  echo "regist OK<br>";   
  10.  
  11.  } 
  12.  
  13.  class regist{   
  14.  
  15.  public function save(){   
  16.  
  17.  echo "regist had saved<br>";   
  18.  
  19.  }   
  20.  
  21.  }   
  22.  
  23. }   
  24.  
  25.     
  26.  
  27. ?> 

test.php

  1. <?php 
  2.  
  3. require "login.class.php";   
  4.  
  5. require "regist.class.php"; 
  6.  
  7. use userCenter\regist;    //使用use调用空间   
  8.  
  9. use userCenter\regist as reg;  //as定义别名 
  10.  
  11. echo \userCenter\check_username();  //绝对调用  
  12.  
  13. $login = new \userCenter\login();   
  14.  
  15. echo $login->save();   
  16. //phpfensi.com 
  17.   
  18. echo regist\check_username();    //相对调用   
  19.  
  20. echo reg\check_username();       //别名调用    
  21.  
  22. $regist = new reg\regist();   
  23.  
  24. echo $regist->save(); 

使用use,比绝对调用要好一点,好比给class,function等加了一个前缀,这样看起来就比较清楚了.

Tags: php命名空间 namespace

分享到: