关于php命名空间的理解

理解命名空间首先要知道命名空间的作用,也就是它的出现解决了那些问题

官方给出的解决的问题是:

  1. 用户编写的代码与PHP内部的类/函数/常量或第三方类/函数/常量之间的名字冲突。
  2. 为很长的标识符名称(通常是为了缓解第一类问题而定义的)创建一个别名(或简短)的名称,提高源代码的可读性。

可以看下这篇文章:https://blog.csdn.net/zhanghuiqi205/article/details/84671608

         https://www.php.cn/php-weizijiaocheng-414933.html

从ThinkPHP5.0开始,遵循PSR-4自动加载规范,只需要给类库正确定义所在的命名空间,并且命名空间的路径与类库文件的目录一致,那么就可以实现类的自动加载,从而实现真正的惰性加载。

以phpmailer这个类库为例,composer自动加载好该类库,有用的文件都放在src这个目录下

这些文件的命名空间都是这个:namespace PHPMailer\PHPMailer;

如果我们要使用PHPMailer这个类,需要use PHPMailer\PHPMailer\PHPMailer;所以文件名要和类名一致(但是如果一个文件里有多个类应该如何使用,所以在一个文件中尽量不要定义多个类)

 

 

 

 

命名空间与文件的路径有时可能不一样,这个就是,PHPMailer的类文件路径是phpmailer\phpmailer\src\PHPMailer.php,命名空间却是PHPMailer\PHPMailer,这是因为在composer加载时就对命名空间与路径进行了绑定,如下图:

 

 thinkphp5 composer加载的类库在vendor目录下,自己下载的类库放在extend目录下,extend目录下的类库可以实现自动加载,

posted @ 2019-03-28 15:14  坚持一点点  阅读(2786)  评论(0编辑  收藏  举报