2016-08-02 76 views
0

,我身邊有一個小戲與一些Composer自動加載,我得到一些問題,因此目錄結構PSR4作曲家Autloading命名空間

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進行自動加載,因此非常感謝任何指導。

回答

5

PSR-4區分大小寫。該結構必須app/Helpers/Router.php或更好的應用與資本A.

所有的類名必須以大小寫敏感的方式引用。

子目錄名稱必須與子命名空間名稱的大小寫匹配。

終止類名稱對應於以.php結尾的文件名。文件名必須匹配終止類名的大小寫。

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

+2

附加提示:如果您剛剛更新了你的自動加載的配置在composer.json你可以得到作曲家只用再生'作曲家dumpautoload'自動加載的配置,而不是等待'作曲家update'到更新其沒有葡萄乾的包列表。 – Sammitch

+0

感謝它是區分大小寫和文件名空間的混合。謝謝你們所有的幫助! –