zoukankan      html  css  js  c++  java
  • Composer 的自动加载机制

    Composer 的自动加载机制

    Composer 提供了四种自动加载方式,分别是 PSR-0PSR-4、生成 classmap 以及之间包含 files

    PSR-0 方式

    PSR-0 方式要求目录名和命名空间层层对应,这样导致目录结构会很深,现在已经被官方废弃了。 但是,因为现在的主流 PHP 框架都已经实现了 PSR-0 方式,所以 Composer 仍然向下兼容。按照 PSR-0 的规则,当加载 UserInfo 这个类的时候,那么会去寻找 src/User/Info.php,最后这个配置会以 Map 的形式,写入生成的 vendor/composer/autoload_namespaces.php 中。

    "autoload": {
        "psr-0": {
            "User\": "src/",
        }
    }
    

    PSR-4 方式

    PSR-4 方式时 Composer 推荐使用的一种方式,同时也是 PSR-0 的替代方式。PSR-4 更容易使用及有更为简便的目录结构。当自动加载 User/Info 这个类的时候,那么会去寻找 src/User/Info 这个文件。PSR-4 的配置会被转换成 namespaceKeyDIR PATHValueMap 的形式,并写入生成的 vendor/composer/autoload_namesapce.php 中。

    "autoload": {
        "psr-4": {
            "User\": "src/",
        }
    }
    

    classmap 方式

    classmap 方式是通过配置指定的目录或文件,然后在 composer installupdate 的时候。会扫描指定目录下的 .php.inc 文件中的类到指定文件路径的映射,并写入生成的 vendor/composer/autoload_classmap.php 文件中。 假设:src 下有一个 BaseController 类,那么在 autoload_classmap.php 文件中,就会生成这样的配置:BaseController => $baseDir . '/src/BaseController.php'

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

    files 方式

    files 方式是手动指定供直接加载的文件。例如:有一个全局的 helper 函数,可以放到一个 helper 文件中直接进行加载。会生成一个数组包含配置中指定的 files,然后写入生成的 vendor/autoload_files.php

    "autoload": {
        "files": ["src/app/helper.php"]
    }
    

    最后

    在配置 composer.json 完成之后,就直接运行 composer install。然后在项目的入口文件中,引入 require 'vendor/autoload.php' 就可以愉快的使用相关的类库了。

  • 相关阅读:
    gradle下载安安装教程
    mybatis 一对一association ,一对多collection
    Module build failed (from ./node_modules/mini-css-extract-plugin/dist/loader.js): ModuleBuildError:
    API
    VUE 自定组件,注意事项,注意事件
    IDEA设置
    正则表达式
    前端页面适配的rem换算
    webpack打包原理
    vue-cli脚手架工具根目录的babelrc配置文件
  • 原文地址:https://www.cnblogs.com/yxhblogs/p/11332542.html
Copyright © 2011-2022 走看看