classe não está em conformidade com o padrão de carregamento automático psr-4. Pulando [duplicado]

Nov 27 2020

Tento usar o autoload do composer, mas recebo este erro

composer.json

    {
        "autoload":{
            "psr-4":{
                "App\\":"app/"
            },
            "files": ["app/functions/helper.php"]
        },
        "require": {
            "vlucas/phpdotenv": "^2.4",
            "altorouter/altorouter": "^1.2",
            "philo/laravel-blade": "^3.1"
        },
        "config":{
            "optimize-autoloader":true
        }
    
    }

minha saída de terminal

    Generating optimized autoload files
    Class App\Controllers\BaseController located in D:/php/Xamp/htdocs/MVC_PHP/app\controllers\BaseController.php does not comply with psr-4 autoloading standard. Skipping.
    Class App\Controllers\IndexControllers located in D:/php/Xamp/htdocs/MVC_PHP/app\controllers\IndexControllers.php does not comply with psr-4 autoloading standard. Skipping.
    Class App\RoutingDispatcher located in D:/php/Xamp/htdocs/MVC_PHP/app\routing\RoutingDispatcher.php does not comply with psr-4 autoloading standard. Skipping.
    Generated optimized autoload files containing 508 classes

Respostas

14 AymDev Nov 27 2020 at 21:06

O padrão PSR-4 requer que seus arquivos e diretórios façam distinção entre maiúsculas e minúsculas e que as classes e namespaces correspondentes estejam em PascalCase.

Para uma App\Controllers\BaseControlleraula, o arquivo deve estar localizado em:

app/Controllers/BaseController.php

Observe as letras maiúsculas C

2º erro : Para qualquer namespace após o namespace de nível superior , deve haver um diretório com o mesmo nome.
Você tem uma App\RoutingDispatcherclasse que deveria ser colocada como, app/RoutingDispatcher.phpmas o app/routing/RoutingDispatcher.phparquivo corresponderia a uma App\Routing\RoutingDispatcherclasse.
Você deve alterar o namespace dessa classe ou mover o arquivo.

Se você alterar seu namespace, certifique-se de renomear o app/routingdiretório com uma letra maiúscula inicial.