Laravel psr-4 not autoloading

前端 未结 2 1491
萌比男神i
萌比男神i 2021-02-10 03:49

I have a Laravel project that works fine locally (Mavericks), but classes under psr-4 aren\'t loading on our stage server (CentOS). I\'m getting a Reflection \"class not found\"

相关标签:
2条回答
  • 2021-02-10 04:01

    PSR-4 is indeed super-touchy about case, more so than Laravel itself. Full folder paths and names must be in the same case as the namespaces. The only places the cases don't need to be the same is where there's a reference in the PSR-4 section of composer.json.

    This only becomes a problem with case-specific operating systems. I had no problems on my Mac, but CentOS refused to play.

    Note this is different to the practice used for Laravel-specific framework across its documentation, which uses lowercase folder paths and CamelCase namespaces. This won't cause any problems on any operating system. July 2015 ETA: this info applied to Laravel 4; looks like Laravel 5 default folder structure adheres to psr-4 standards.

    I eventually ended up with a folder structure like:

    app/heatherland
      Import
        ImportJob.php
    

    namespaces eg

    HeatherLand\Import
    

    and a composer.json entry as per the original question:

    "autoload": {
        "classmap": [
            "app/commands",
            ...
            "app/database/seeds",
        ],
        "psr-4": {
            "HeatherLand\\": "app/heatherland"
        }
    },
    

    Note to self: Remember to run composer dump-autoload. Dump early, dump often.

    0 讨论(0)
  • 2021-02-10 04:16

    Namespaces, folders and file names are case sensitive.

    If you have 'App\website' you must call it in php file 'App\website' is correct but 'App\Website' is wrong

    0 讨论(0)
提交回复
热议问题