autoload
目前支持4种,PSR-0,PSR-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用。