最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • php命名空间的使用

    正文概述 转载于:掘金(陆小天)   2021-07-24   300

    一、命名空间

    1.1 介绍

    在一个大的项目中,可能会遇到同名的类、函数、常量,为了区分这些元素,我们可以将这些元素分别存放到不同的命名空间中。 1、命名空间就是包,用来存放项目中的类、函数、常量 2、通过namespace关键字来声明命名空间

    1.2 声明命名空间

    例:

    <?php
      namespace China; // 定义命名空间
      function getInfo () {
        echo '我是中国人';
      }
      getInfo();
    
      namespace USA; // 定义命名空间
      function getInfo () {
        echo '我是美国人';
      }
      getInfo();
    ?>
    

    效果: php命名空间的使用 利用\命名空间\可进入某个命名空间中调用方法。 例:

    <?php
      namespace China; // 定义命名空间
      function getInfo () {
        echo '我是中国人';
      }
      getInfo();
    
      namespace USA; // 定义命名空间
      function getInfo () {
        echo '我是美国人';
      }
      getInfo();
      \China\ getInfo();
    ?>
    

    效果: php命名空间的使用

    1.3 多级命名空间

    命名空间的名字可以是多级的(子级命名空间) 例如:

    <?php
      namespace China\Beijing\Shunyi; // 定义命名空间
      function getInfo () {
        echo 'China\Beijing\Shunyi';
      }
      getInfo(); // 非限定名称访问
    
      namespace USA\Washington; // 定义命名空间
      function getInfo () {
        echo 'USA\Washington';
      }
      \USA\Washington\ getInfo(); // 完全限定名称访问
    ?>
    

    效果: php命名空间的使用

    1.4 访问空间元素的三种方式

    1、非限定名称访问 2、完全限定名称访问 3、限定名称访问 例:

    <?php
      namespace China\Beijing\Shunyi; // 定义命名空间
      function getInfo () {
        echo 'China\Beijing\Shunyi';
      }
    
      namespace China\Beijing; // 定义命名空间
      function getInfo () {
        echo 'China\Beijing';
      }
    
      getInfo();  // 非限定名称访问 
      \China\Beijing\getInfo();  // 完全限定名称访问
      Shunyi\getInfo();  // 限定名称访问
    
    ?>
    

    效果: php命名空间的使用

    二、引入命名空间

    通过use引入命名空间 完全限定名称访问元素 引入命名空间的拼接规则

    例:

    <?php
      namespace China\Beijing\Shunyi; // 定义命名空间
      function getInfo () {
        echo 'China\Beijing\Shunyi<br>';
      }
    
      namespace China\Beijing; // 定义命名空间
      function getInfo () {
        echo 'China\Beijing<br>';
      }
    
      use China\Beijing\Shunyi;
      getInfo(); 
      Shunyi\getInfo();
    
    ?>
    

    效果: php命名空间的使用

    2.1 引入空间元素

    引入类: use 引入函数:use function 引入常量: use const 例:

    <?php
      namespace China\Beijing\Shunyi; // 定义命名空间
      class Student {
      }
      function getInfo() {
        echo 'jdk';
      }
      const TYPE = 'CONST';
      namespace USA; // 定义命名空间
      // 引入类
      use China\Beijing\Shunyi\Student;
      $stu = new Student();
      var_dump($stu);
      echo '<br>';
      // 引入函数
      use function China\Beijing\Shunyi\getInfo;
      getInfo();
      echo '<br>';
    
      // 引入常量
      use const China\Beijing\Shunyi\TYPE;
      echo TYPE;
    ?>
    

    效果: php命名空间的使用

    2.2 给类、函数取别名

    如果引入的类和函数与当前空间的类和函数名称相同,需要给引入的类和函数取别名。 通过as取别名 例:

    <?php
      namespace China\Beijing\Shunyi; // 定义命名空间
      class Student {
      }
      
    
      namespace USA; // 定义命名空间
      class Student {
    
      }
      use China\Beijing\Shunyi\Student as ChinaStudent;
      $stu=new Student;
      var_dump($stu);
      echo '<br>';
      $stu1=new ChinaStudent;
      var_dump($stu1);
    ?>
    

    效果: php命名空间的使用

    2.3 公共空间

    如果一个页面没有namespace声明空间这个页面的元素在公共空间下 公共空间用\表示 例:

    <?php
      function getInfo() {
        echo '李白<br>';
      }
      \getInfo();
    
    ?>
    

    效果: php命名空间的使用

    2.4 命名空间注意事项

    1、命名空间只能存放类、函数、const常量。 2、第一个namespace前面不能有任何的代码,空白字符,header()也不行。 3、包含文件不影响当前的命名空间。


    起源地下载网 » php命名空间的使用

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元