基于PHP规范的自动加载方式(composer配置)

Posted 与f

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于PHP规范的自动加载方式(composer配置)相关的知识,希望对你有一定的参考价值。

针对php这种编程语言,到目前FIG指定了五个规范,分别如下:

  • PSR0:自动加载;
  • PSR1:基本代码规范;
  • PSR2:代码样式规范;
  • PSR3:日志接口规范;
  • PSR4:自动加载规范;

看上去PSR4与PSR0是重复了,但是PSR4规范比较干净,可以看成PSR0规范的升级版。二者最重要区别在于:PSR0规范中,下划线会被转换为目录分隔符,但是PSR4中下划线不具有特殊的含义。二者都是通过特定的目录、文件名以及类名,实现快速查找到类文件,并将相应的类加载进来。

PSR0和PSR4要求有个命名的空间,对上述的ClassTest类做相应的修改如下:

<?php
namespace ClassTestLib;
class ClassTest{
 
    public function test()
    {
        echo "hello world!";
    }
}

那么对应的文件的路径应该改为\\lib\\ClassTestLib\\ClassTest.php,此时修改composer.json中的autoload如下:

"autoload":{
    "psr-0":{
        "ClassTestLib":"lib/"
    }  
}

可能你发现psr0的值有一些奇怪,是的。在这里ClassTestLib代表的是命名空间,而"lib"是目录名。加载对应的类文件的时候,搜索的路径是lib/ClassTestLib,而不是ClassTestLib/lib,这是在书写composer.json的时候需要注意的一点。

  如果命名空间中存在着“\\”,则在书写对应的composer.json的时候需要在相应的“\\”再添加一个“\\”。例如,如果命名空间改为ClassTest\\Lib,相应的对应与应用根目录的路径名称应该变为\\lib\\ClassTest\\Lib\\ClassTest.php,对应的composer.json中的autoload应该变为:

"autoload":{
    "psr-0":{
        "ClassTest\\\\Lib":"lib/"
    }  
}

 

 

转 :https://www.cnblogs.com/yue-blog/p/5904275.html

 

以上是关于基于PHP规范的自动加载方式(composer配置)的主要内容,如果未能解决你的问题,请参考以下文章

Yaf框架下类的自动加载

composer 自动载入的四种方式

PSR : php编码规范

自动加载

PHP中类自动加载的方式

Composer实现项目的自动加载