2016-07-23 16 views
2

Ich kämpfe mit Namensräumen in Laravel. Ich habe eine Standard-Ordnerstruktur für ein Projekt, nachdem ich Laravel neu gemacht habe. Ich habe einen Ordner Data Access in der App Ordner mit dem Namen, damit ich meine Daten Zugang zu allen Klassen setzen in so hat es die folgende Struktur:Laravel 5.2 Namespaces

projectdir> app> Data Access> dataaccessclasses (Dateien)

und alle meine Data Access Klassen die Namespace-App an der Spitze jeder Klasse (ich habe das gemacht, um die Dinge einfach zu machen). Jetzt in meinem Controller füge ich diese nach oben, damit ich meine Data Access-Klassen verwenden:

<?php use App; ?> 

Aber Laravel sagt mir, dass es nicht meine Data Access Klasse finden kann und versucht, sie auf den Namespace des Controllers relativ zu lösen. Hier ist der Fehler, den es bei mir spuckt:

Reflection in Container.php Linie 794: Klasse App \ Http \ Controllers \ StockDataAccess existiert nicht.

kann jemand irgendein Licht darauf werfen, was das alles bedeutet?

Antwort

1

Der app Ordner standardmäßig folgt PSR-4 automatisch geladen Spezifikationen

so, wenn Klassen in Unterordner Ihres app Ordner zu erklären, sollten Sie nicht den App Namespace verwenden, sondern den Namensraum in Bezug auf den Pfad des spezifischen Unterordner.

Zum Beispiel in dieser Klasse:

app > dataaccess > dataaccessclasses > StockDataAccess.php 

sollten Sie verwenden:

namespace App\dataaccess\dataaccessclasses\StockDataAccess; 

in Ihrer Klassendefinitionsdatei. Um die Klasse in der Steuerung zu verwenden, sollten Sie verwenden:

use App\dataaccess\dataaccessclasses\StockDataAccess; 
+0

dies habe gerade versucht, wie Sie gesagt haben es und es endet immer noch mit dem gleichen Fehler. Ich lese über psr-4, um zu verstehen, was das alles bedeutet, aber leider arbeitet sie nicht –

+0

@Eagletrophy: Es gibt Ihnen den gleichen Fehler? Wenn Sie 'app \ dataaccess \ dataaccessclasses \ StockDataAccess;' in Ihrem Controller verwenden, sollte es zumindest nach der Klasse in diesem Verzeichnis suchen und Ihnen einen weiteren Fehler geben. Betrachten Sie für das PSR-4 als Beispiel die vorhandenen Laravel-Klassen im App-Ordner (zB http/middleware ecc.): Sie werden sehen, dass der Namespace jeder Klasse immer vom Klassen-Dateipfad abhängt. – Moppo

+0

Ich habe was überprüft Ich habe gegen das, was Sie gerade erklärt haben, und ich bekomme immer noch das Gleiche. Das ist wirklich frustrierend, denn selbst nachdem ich das PSR-4-Dokument mit php-fig gelesen habe, sehe ich immer noch nicht, wo mein Fehler liegt. Ich werde einfach meinen Datenzugriffscode in meine Controller schreiben und es auf diese Weise vergessen. Aber das fühlt sich an wie ein Laravel-Bug, den ich nicht in der Lage bin, Wege in Fenstern oder etwas richtig zu lösen. Anyways Danke für Ihre Hilfe moppo –

0

müssen Sie die classmap in composer.json mit „app \ Data Access \ dataaccessclasses“ aktualisieren und laufen Komponist Dump