PSR-4 规范基础

Alexer 发布于 阅读:31 速查

PSR-4 做的事只有一件:把一个命名空间前缀绑定到一个目录,然后把前缀后面那部分中的反斜杠替换成斜杠,末尾补上 .php,拼出来的就是类文件的路径。类名和文件名里的字母大小写必须一致,下划线没有特殊含义。

用 Composer 时,配置写法如下:

{
    "autoload": {
        "psr-4": {
            "App\\": "src/"
        }
    }
}

这样一来,App\Service\Mailer 这个类就落在 src/Service/Mailer.php:

<?php
// src/Service/Mailer.php
namespace App\Service;

class Mailer
{
    public function send(): string
    {
        return 'ok';
    }
}

即使不使用 Composer,也可以自己注册一个加载器:

spl_autoload_register(function ($class) {
    $prefix  = 'App\\';                    // 命名空间前缀
    $baseDir = __DIR__ . '/src/';          // 前缀对应的目录
    if (strncmp($class, $prefix, strlen($prefix)) !== 0) {
        return;                            // 不是这个前缀的类就跳过
    }
    $relative = substr($class, strlen($prefix));
    $file = $baseDir . str_replace('\\', '/', $relative) . '.php';
    if (is_file($file)) {
        require $file;
    }
});

PHP 代码基础 语法基础