2016-08-02 9 views
0

Ich habe mit einigen Composer autoloading ein wenig spielen mit um, und ich habe einige Probleme bekommen, so dass die VerzeichnisstrukturPSR4 Komponist Autloading Namespaces

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

In meinem composer.json ich habe, ist die folgende

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

Inside my index.php ich habe

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

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

erhalten die folgenden Fehler

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

ich ein paar verschiedenen Dinge versucht habe, zu versuchen und es funktioniert, aber ich bin nicht sicher, wo ich falsch gehe. Dies ist das erste Mal, dass ich Autoloading mit Composer außerhalb eines Frameworks durchführe, daher würde ich mich über jede Anleitung freuen.

Antwort

5

PSR-4 unterscheidet zwischen Groß- und Kleinschreibung. Die Struktur hat app/Helpers/Router.php oder besser App mit Kapital A.

Alle Klassennamen werden, müssen in Groß- und Kleinschreibung Mode referenziert werden.

Der Name des Unterverzeichnisses MUSS mit der Groß- und Kleinschreibung der Unternamespace-Namen übereinstimmen.

Der Name der abschließenden Klasse entspricht einem Dateinamen mit der Endung .php. Der Dateiname MUSS mit der Groß-/Kleinschreibung des abschließenden Klassennamens übereinstimmen.

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

+2

Weiterer Tipp: Wenn Sie nur Ihre Autoload config in composer.json aktualisiert haben, können Sie Komponisten nur die automatisch geladen Config zu regenerieren mit 'Komponisten dumpautoload' anstatt zu warten, für' Komponisten update' bekommen Update seine Paketlisten für keine Rosinen. – Sammitch

+0

Danke, dass es eine Mischung aus Groß-/Kleinschreibung und Dateinamenspalten ist, die ein wenig squiffy sind. Danke, dass du wirklich geholfen hast! –