composer自动加载机制

autoload

目前支持4种,PSR-0PSR-4,classmap,files加载方式

虽然推荐使用PSR-4,因为它提供了更好的易用性(添加类时不需要重新生成自动加载器)。

Example:

{
    "autoload": {
        "psr-4": {
            "Monolog\\": "src/",
            "Vendor\\Namespace\\": ""
        }
    }
}

 在psr-4键下,您定义了从名称空间到路径的相对于包根的映射。当自动加载像Foo\\Bar\\Baz这样的类时,名称空间前缀Foo\\指向一个目录src/意味着自动加载器将查找一个名为src/Bar/Baz.php的文件,并包括它(如果存在)。注意,与旧的PSR-0风格相反,前缀(Foo\\)不在文件路径中。

在安装/更新期间,所有的PSR-4引用都被组合成一个键=>值数组,该数组可以在生成的文件vendor/composer/autoload_psr4.php中找到。

PSR-0

在 psr-0 key 下你定义了一个命名空间到实际路径的映射(相对于包的根目录)。注意,这里同样支持 PEAR-style 方式的约定(与命名空间不同,PEAR 类库在类名上采用了下划线分隔)。

在 install/update 过程中,PSR-0 引用都将被结合为一个单一的键值对数组,存储至 vendor/composer/autoload_namespaces.php 文件中。

Classmap

classmap 引用的所有组合,都会在 install/update 过程中生成,并存储到 vendor/composer/autoload_classmap.php 文件中。这个 map 是经过扫描指定目录(同样支持直接精确到文件)中所有的 .php 和 .inc 文件里内置的类而得到的。

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

实例:

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

Files

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

实例:

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

还有几种方法,常用如上,可用于加载需要的类文件,或者sdk用。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值