2014-05-19 3 views
16

In meinem Laravel-Projekt habe ich ein Modell namens CustomerLinks erstellt. Das Modell befindet sich im Ordner app/models. Mein Komponist Datei hat eine automatische Laden von:Laravel/Komponist: Die use-Anweisung mit nicht-zusammengesetzten Namen

"autoload": { 
    "classmap": [ 
     ... 
     "app/models", 
     ... 

    ], 
    ... 
}, 

Und ich habe eine use Aussage in meinem ExtendedUserController der CustomerLinks verweist:

<?php 

... 
use CustomerLinks; 
... 

class ExtendedUserController extends UserController { 

Es ist mein Verständnis, dass, da die Autoload-Eigenschaft in der Komponisten-Datei hat app/Modelle in der Classmap bedeutet, dass ich in der Lage sein sollte use CustomerLinks ohne ein Namespacepräfix zu verwenden.

Dies funktioniert, aber zu jeder Zeit mache ich eine Änderung meiner ExtendedUserControler und laden meinem Browser erhalte ich die Fehlermeldung:

The use statement with non-compound name 'CustomerLinks' has no effect 

Die Fehlerpunkte auf dem use CustomerLinks Linie erweitert Benutzer-Controller.

Wenn ich ein composer dump-autoload alles funktioniert gut, aber es wird extrem irritierend, wenn ich das Muster folgen

make a change -> dump autoload -> refresh browser -> repeat

Gibt es irgendeine Art und Weise mit dem Fehler umzugehen?

Antwort

27

Wenn Sie sich nicht in einem Namespace befinden (dh Sie befinden sich im Root-Namespace) und die zu verwendende Klasse ebenfalls nicht in einem Namespace (also auch im Root-Namespace) ist, macht die Verwendung von use keinen Sinn. weil der Code ohne ihn funktioniert. Mit dieser Anweisung importieren Sie nichts.

Composer hat damit nichts zu tun, auch kein Autoloading. So funktioniert PHP alleine.

+11

letzter Satz war nicht hilfreich Sven. Wir sind alle irgendwo im Lernkontinuum –

+5

Ich denke, dass Informationen darüber, welcher Teil unserer magischen Technologie verantwortlich ist, gültige Informationen sind. Wenn der TO etwas in der Annahme tut, dass es die Situation verbessern sollte, die niemals funktionieren wird, sollte ich ihm sagen, dass seine mentale Verbindung zwischen den Dingen falsch ist. Es erlaubt ihm auch, die richtige Dokumentationswebseite für verwandte Probleme zu verwenden. – Sven

+0

Löschen Sie einfach die Bibliothek verwenden; Linie und wieder laufen. Arbeitete für mich. – Dazzle