PHP的use

作者: 凤非飞 | 来源:发表于2018-10-29 11:55 被阅读0次

    比方说建三个文件。

    第一个文件 A.php,里边有两个类,命名空间是 a\b\c;

    <?php
    namespace a\b\c;
    
    class Apply{
      function get_info(){
        echo 'this is A Apply';
      }
    }
    
    class C{
      function info(){
        echo 'this is info';
      }
    }
    
     
    
      第二个文件 B.php  命名空间 a\b\d;
    
    <?php
    namespace a\b\d;
    
    class Apply{
      function get_info(){
        echo 'this is B Apply';
      }
    }
    
    

    第三个文件 index.php ,用来使用上边两个文件的类。

    比方说我们现在想实例化A.php里的类,该怎么实现呢?

    首先要包含这个文件 require_once('A.php');

    然后 use a\b\c;? 还是a\b\c\A? 起初我也是这么认为的。其实这是错的,use应该是这样的,命名空间\这个空间下你要实例化类的类名。比方说我们要实例化 A.php里的Apply类,那么 use a\b\c\Apply; 这就相当于引入这个类,接下来再 new Apply();调用里边的方法,跟平常是一样的。如果要实例化类C,就 use a\b\c\C;

    注意:use不等于require_once或者include, use的前提是已经把文件包含进当前文件

    有的人可能问了,那我不同的命名空间下,有相同的类名,在同一个文件中使用怎么办?比方说我们上边的index.php,把A.php和B.php都包含进来,然后new Apply();这个时候是会报错的,解决方案就是起别名,比方说 use a\b\d\Apply as b; 此时我们new 的时候不应该写成 new Apply();而是new b();这样就不会发生冲突了。

    相关文章

      网友评论

          本文标题:PHP的use

          本文链接:https://www.haomeiwen.com/subject/bchbtqtx.html