PSR4 Composer自动加载命名空间

Mat*_*ens 0 php composer-php psr-4

我一直在玩一些Composer自动加载,我遇到了一些问题所以目录结构是

index.php
app/
   helpers/
          router.php
vendor/
   composer/
          /*usual files*/
   autoload.php
Run Code Online (Sandbox Code Playgroud)

在我的内心,我composer.json有以下内容

"autoload": {
        "psr-4": {
            "App\\": "app/"
        }
    }
Run Code Online (Sandbox Code Playgroud)

在我的index.php我有

<?php
// Autoload our namespaces
require __DIR__.'/vendor/autoload.php';

use App\Helpers\Router;
$route = new Router;
Run Code Online (Sandbox Code Playgroud)

得到以下错误

Fatal error: Class 'App\Helpers\Router' not found in /var/www/public/index.php on line 6

我尝试了一些不同的东西来尝试让它工作,但我不确定我哪里出错了.这是我第一次在框架之外使用Composer进行自动加载,所以会很感激任何指导.

Fin*_*nwe 5

PSR-4区分大小写.结构必须是app/Helpers/Router.php或更好App与资本A.

必须以区分大小写的方式引用所有类名.

子目录名称必须与子命名空间名称的大小写匹配.

终止类名对应于以.php结尾的文件名.文件名必须与终止类名称的大小写相匹配.

http://www.php-fig.org/psr/psr-4/

  • 附加提示:如果你刚刚更新了composer.json中的自动加载配置,你可以让作曲家只用`composer dumpautoload`重新生成自动加载配置,而不是等待`composer update`来更新它的包列表,没有葡萄干. (2认同)