kelas tidak sesuai dengan standar autoloading psr-4. Melewati [duplikat]

Nov 27 2020

Saya mencoba menggunakan pemuatan otomatis komposer tetapi saya mendapatkan kesalahan ini

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
        }
    
    }

keluaran terminal saya

    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

Jawaban

14 AymDev Nov 27 2020 at 21:06

Standar PSR-4 mengharuskan file dan direktori Anda peka huruf besar / kecil dan kelas serta namespace yang sesuai harus ada di PascalCase.

Untuk App\Controllers\BaseControllerkelas, file harus ditempatkan di:

app/Controllers/BaseController.php

Perhatikan huruf besarnya C

Kesalahan kedua : Untuk namespace apa pun setelah namespace tingkat atas , harus ada direktori dengan nama yang sama.
Anda memiliki App\RoutingDispatcherkelas yang harus ditempatkan sebagai app/RoutingDispatcher.phptetapi app/routing/RoutingDispatcher.phpfile akan sesuai dengan App\Routing\RoutingDispatcherkelas.
Anda harus mengubah namespace kelas itu atau memindahkan file.

Jika Anda mengubah namespace-nya, pastikan untuk mengganti nama app/routingdirektori dengan huruf besar di depan.