composer.json中的自动加载映射以及PSR规范

现在composer版本中支持的自动加载映射有PSR-0、PSR-4、Classmap和Files, PSR-4是首推的方法,因为它提供了更大的易用性。

PSR-4:

PSR-4规范了如何指定文件路径从而自动加载类,同时规范了自动加载文件的位置。乍一看这是和PSR-0重复了,实际上,在功能上确实有一部分重复。区别在于,PSR-4的规范比较干净,去除了兼容PHP5.3以前版本的内容。

在PSR-4的键下,你可以定义命名空间和路径的映射关系,当自动加载类如Foo\Bar\Baz时,命名空间Foo指向一个名为src/的目录意味着自动加载器将查找名为src/Bar/Baz.php文件并引用它。

命名空间的前缀必须以\结尾,以避免类似前缀之间的冲突。在安装和更新间,PSR-4引用全部组合到一个key=>value数组中,该数组可以在生成的文件vendor/composer/autoload_psr4.php中找到。

示例:

{   
     "autoload": {     
           "psr-4": {
               "App\\": "App/" // 命名空间App映射到目录App  
               }   
           }
 }

classmap:

classmap引用的所有组合,都会在安装、更新的过程中生成并存储到vendor/composer/autoload_classmap.php文件中。

你可以使用classmap生成支持自定义加载的不遵循PSR-4规范的类库,要配置它指向的目录,以便能够准确的搜索到类文件

示例:

{  
       "autoload": { 
            "classmap": ["src/", "lib/", "Something.php"]   
         } 
}

files:

如果你想要明确的指定,在每次请求时都要载入某些文件,那么你可以使用 ‘files’ autoloading。通常作为函数库的载入方式(而非类库)。

示例:

{     
       "autoload": {    
               "files": ["src/MyLibrary/functions.php"]    
          } 
} 

什么事PSR呢?PSR是PHP Standards Recommendation的简称,是php-fig组织规定的一套编码规范。目前发布5个规范

PSR-0:自动加载标准,目前已经被弃用,推荐使用PSR-4替代

PSR-1:基本的编码风格

  • Files MUST use only <?php and <?= tags.
  • Files MUST use only UTF-8 without BOM for PHP code

不一一列举编发风格,相见官方文档:https://www.php-fig.org/psr/psr-1/

PSR-2:编码风格,相对于 1 更严格

PSR-3:日志记录接口

PSR-4:自动加载

PSR-4规范描述了一个标准的自动加载器策略,指在运行时按需查找PHP类、接口或Traits。支持PSR-4自动加载器标准的PHP组建和框架,使用同一个自动加载器就能找到相关代码,然后将其载入PHP解释器。有了这个功能,就可以把现代PHP生态系统中很多客户操作的组件联系起来

文章相关资料来自composer中文网https://docs.phpcomposer.com/04-schema.html#autoload

[https://www.php-fig.org](

发表评论

电子邮件地址不会被公开。 必填项已用*标注