主页 > PHP教程 > 正文

一篇弄懂PHP命名空间及use的运用

最近一段时间在研讨php结构,一向想的什么时分才干开发出自己的结构,当然这是为了提高自己的编程水平,一起能把平常学的零星的东西糅合在一块娴熟运用。可是开发一个结构底子不知道怎样做起,先开发什么,尽管php的结构也不少,可是都是怎样运用,没有文档和视频能够学习,这是让我特别抑郁的工作,信任不少想自己开发结构玩的小伙伴都有相似的感触,抑郁归抑郁,自己仍是着手做了,做的时分困难和幻想的相同难,从一开端就有点蒙了。

那便是命名空间的运用及use引进。看了许多网上的说法,也看了官方文档,意思大约了解,也很好了解,命名空间还好说,给这个空间起个姓名嘛,可是use具体操作起来就不可 了,怎样也搞不通。后来看一个yii学习视频才恍然了解。

比方说建三个文件。


第一个文件 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的条件是现已把文件包括进当时文件。

趁便提一句,在MVC形式中,类名和文件名是相同的,所以use的时分会让不了解的人认为use后边跟的是文件名,我之前就这么认为的。其实use的仍是类名。


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


上一篇:memcached 和 redis 运用场景及优缺点比照
下一篇:过错处理:cc: Internal error: Killed (program cc1)

PythonTab微信大众号:

Python技能交流合作群 ( 请勿加多个群 ):

群1: 87464755

群2: 333646237

群3: 318130924

群4: 385100854