PSR4 Composer自动加载命名空间

时间:2016-08-02 20:50:50

标签: php composer-php psr-4

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

index.php
app/
   helpers/
          router.php
vendor/
   composer/
          /*usual files*/
   autoload.php

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

"autoload": {
        "psr-4": {
            "App\\": "app/"
        }
    }

我的index.php内有

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

use App\Helpers\Router;
$route = new Router;

获得以下错误

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

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

1 个答案:

答案 0 :(得分:5)

PSR-4区分大小写。结构必须是app/Helpers/Router.php或更好的App,大写为A.

  

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

     

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

     

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

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