PSR-4 自动加载机
PSR-4 是一个公认的建议,概述了通过文件名自动加载类的标准。建议将此建议替换为早期(现已弃用)的 PSR-0 。
完全限定的类名应符合以下要求:
\<NamespaceName>(\<SubNamespaceNames>)*\<ClassName>
- 它必须包含顶级供应商名称空间(例如:
Alphabet
) - 它可以包含一个或多个子命名空间(例如:
Google\AdWord
) - 它必须包含一个结束类名称(例如:
KeywordPlanner
)
因此,最终的类名称将是 Alphabet\Google\AdWord\KeywordPlanner
。完全限定的类名也应转换为有意义的文件路径,因此 Alphabet\Google\AdWord\KeywordPlanner
将位于 [path_to_source]/Alphabet/Google/AdWord/KeywordPlanner.php
中
从 PHP 5.3.0 开始,可以定义自定义自动加载器功能, 以根据你定义的路径和文件名模式加载文件。
# Edit your php to include something like:
spl_autoload_register(function ($class) { include 'classes/' . $class . '.class.php';});
用适用于你的结构的值替换位置(‘classes /’)和文件扩展名(’.class.php’)。
Composer 包管理器支持 PSR-4 ,这意味着,如果你遵循标准,则可以使用 Composer 的供应商自动加载器自动加载项目中的类。
# Edit the composer.json file to include
{
"autoload": {
"psr-4": {
"Alphabet\\": "[path_to_source]"
}
}
}
重新生成自动加载器文件
$ composer dump-autoload
现在,在你的代码中,你可以执行以下操作:
<?php
require __DIR__ . '/vendor/autoload.php';
$KeywordPlanner = new Alphabet\Google\AdWord\KeywordPlanner();