2016-08-02 3 views
0

У меня были немного поиграть с некоторыми Composer автозагрузкой и я получаю некоторые вопросы, поэтому структура каталоговPSR4 Composer 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

Спасибо, что это была смесь чувствительности к регистру и пространства имен файлов, немного немного шевелящиеся. Спасибо, что вы действительно помогли! –

Смежные вопросы