Автозагрузчик Slim 3 Middleware и PSR-4 Composer: класс не найден

composer.json:

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

SRC /Auth/RequestMethodPathRule.php:

namespace App\Auth;
class RequestMethodPathRule implements  \Slim\Middleware\HttpBasicAuthentication\RuleInterface 
{ 
...

SRC /middleware.php

$app->add(new \Slim\Middleware\HttpBasicAuthentication([
    "rules" => [new App\Auth\RequestMethodPathRule(

Это приводит к

Класс 'App\Auth\RequestMethodPathRule' не найден.

Включение всего кода в RequestMethodPathRule.php в файл middleware.php работает нормально.

Более странно, что наряду с ошибкой 500 браузер отображает исходный код RequestMethodPathRule.php!

РЕДАКТИРОВАТЬ: О боже, у меня был ярлык на файл класса (<? instead of <?php) так что php рассматривал это как текст. Привычки трудно бросить.

1 ответ

Решение

Более странно, что наряду с ошибкой 500 браузер отображает исходный код RequestMethodPathRule.php!

Это означает, что композитор правильно включает файл, но класс не найден, потому что код не интерпретируется php. В этом случае, поскольку короткие теги обычно не включены, вам просто нужно заменить их на <?php вместо тега.

Другие вопросы по тегам