2017-03-29 4 views
1

I Homecontroller Klasse von lib Verzeichnis laden möchten:PSR-4 autoloading Probleme

root/ 
-lib/ 
--/HomeController.php 
-vendor/ 
-composer.json 
-index.php 

Composer.json

"autoload": { 
    "psr-4": { 
     "Lib\\": "lib/" 
    } 
} 

HomeController.php

namespace Lib; 
class HomeController {} 

index.php

var_damp(new \Lib\HomeController.php); 

Es findet die Klasse nicht.
Aber wenn ich in Controller-Verzeichnis setzen HomeController.php:

root/ 
-lib/ 
--/Controllers/HomeController.php 

Und die Namespaces aktualisieren: index.php und HomeController.php zu:

namespace Lib\Controllers; 
class HomeController {} 

Es funktioniert perfekt.
Es ist seltsam, ich kann keine Dokumente finden, die darüber sprechen. Ich brauche keine zusätzlichen Verzeichnisse, in diesem Fall möchte ich die HomeController-Klasse direkt im Verzeichnis lib.

Wie kann ich es funktioniert innerhalb lib Ordner?

+0

kann es sein, dass Sie den Befehl 'composer dumpautoload' nicht ausführen? –

+0

Ich habe 'composer dump-autoload' versucht,' autoload_psr4.php' ist korrekt. Außerdem habe ich composer.lock entfernt und neu erstellt. Ich kann Autoload immer noch nicht verwenden. – Doc999tor

Antwort

0

Ich denke, der Schrägstrich in der Pfadreferenz ist Ihr Problem. Ändern Sie den Autoload Abschnitt in composer.json dazu:

"autoload": { 
    "psr-4": { 
    "Lib\\": "lib" 
    } 
} 

... dann composer dump-autoload laufen.

+0

Ich habe es ein paar Mal versucht. Es hat keine Wirkung. In Composer-Dokumenten wird empfohlen, den abschließenden Schrägstrich zu verwenden. Jedenfalls werde ich es nochmal versuchen. Vielen Dank – Doc999tor

Verwandte Themen