psr4 php 目录映射,composer 自动载入 autoload 的使用详解 psr0/psr4/classmap/files

classmap 模式 autoload_classmap

懒加载,扫描目录下的所有类文件,支持递归扫描, 生成对应的类名=>路径的映射,当载入需要的类时直接取出路径,速度最快// classmap 扫描目录下的所有类文件 生成对应的类名=>路径的映射"classmap": [    "classmap/lib/src/"]

files 模式

自动载入的文件,主要用来载入一些没办法懒加载的公共函数// 扫描目录下的所有文件生成 hash => 路径的映射  运行时实时加载

// 主要用来载入工具函数"files": [    "ext/common/functions.php",    "ext/system/functions.php"]

框架结构

这里我要尽可能把四种自动载入模式的特征举例出来,所以框架结构并不很合理,不要在意./

├── app

│   ├── controllers

│   └── models

├── classmap

│   └── lib

│       └── src

├── composer.json

├── ext

│   ├── common

│   │   └── functions│   └── system

│       └── functions├── psr0

│   └── lib

│       └── src

└── psr4

└── lib

└── src

autoload 规则

编辑 composer.json 文件{    "autoload": {        "psr-0": {            "Psr0\\Lib\\": "psr0/lib/src/"

},        "psr-4": {            "Psr4\\Lib\\": "psr4/lib/src/",            "App\\Controllers\\": "app/controllers/",            "App\\Models\\": "app/models/"

},        "classmap": [            "classmap/lib/src/"

],        "files": [            "ext/common/functions.php",            "ext/system/functions.php"

]

}

}

刷新 autoload 规则composer dump-autoload

autoload 中有psr4 和 classmap  files 这三种类型,

当使用classmap 、files这两种方式引入文件的时候,每一次新增文件都需要使用 composer update 或者 composer dump-autoload 这样的方式进行classmap 映射文件的更新。

有的时候,如何才能避免 增减一个文件,不要composer dump-autoload 呢?

这就是psr4 与其他两个类的不同之处。

当你添加了新的  psr-0/psr-4 的规则,或者在 classmap/files 规则相应的目录下新增了文件时,都需要执行 dump-autoload 来刷新系统的自动载入。

运行一下 compser dump-autoload 来刷新自动载入

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值