2016-12-26 1 views
0

Ich habe eine PHP-Bibliothek-Klassendatei namens CsvClass.php. Ich lege diese Datei in den Speicherort app/Libraries/CsvClass.php. Ich habe gesehen Some URL, wo diese Art von Problem die Lösung haben. Also nach der Richtung habe ich namespace App\Libraries; und use App\Libraries\CsvClass; in der Steuerung hinzugefügt. Aber dazu habe ich diesen Fehler zum Zeitpunkt des Ladens des Controllers. FatalErrorException in ImportController.php line 17:Class 'App\Libraries\Controller' not found.Fehler in der externen PHP-Klasse gehören in Laravel 5.3?

Also ich Kommentar app/Libraries/CsvClass.php und laufen, so dass der Controller geladen wird. Am oberen Teil des Controllers aussehen wird nun wie folgt aus,

namespace App\Http\Controllers; 
//namespace App\Libraries; 

use App\Libraries\CsvClass; 
use Illuminate\Http\Request; 
use App\Http\Requests; 
use Illuminate\Http\RedirectResponse; 
use Clusterpoint\Client; 
use DateTime; 
use Session; 
use Excel; 

Aber wenn ich versuche, um die Klasse zu verwenden, und es ist ein Fehler, der,

FatalErrorException in ImportController.php line 120: Class 'App\Http\Controllers\parseCSV' not found 

Ich versuche versuchen, diese Klasse zu verwenden,

$csv = new parseCSV(); 
$csv->auto($path); 
$full_data=$csv->data; 

Hier $path enthalten den Pfad der CSV-Datei. Diese Funktion arbeitet in einer separaten PHP-Datei. Aber nicht in Laravel. Ich benutze Version 5.3. Und folgen Sie den Regeln zum Importieren der externen Dateien in Laravel. Aber verstehe nicht, warum der Fehler kommt. Bitte hilf mir.

Ich verwende eine CSV-Bibliothek, um CSV-Datei zu lesen. Die Bibliothek ist here.

+0

Können Sie Ihre Datei 'CsvClass.php' anzeigen? –

+0

Sie können die Datei von https://github.com/parsecsv/parsecsv-for-php Link herunterladen. gib schon den Link in der Frage an. – Avishake

+0

Stellen Sie sicher, dass Sie den Namespace für CsvClass.php festgelegt haben, um App \ Libraries \ CsvClass in Ihrer Verwendungsanweisung zu bearbeiten. –

Antwort

0

Die Verwendung von Klassen ohne Namespaces und unterschiedlichen Dateinamen ist am besten mit dem Autoloader des Composers möglich.

1) Registrieren Sie Ihre Klasse in classmap.

"autoload": { 
     "classmap": [ 
      "database", 
      "app/Libraries/CsvClass.php" 
     ], 
     "psr-4": { 
      "App\\": "app/" 
     } 
    }, 

2) Führen composer dump-autoload

Jetzt können Sie Ihre Klasse überall zugreifen können, ohne den vollständigen Pfad bereitstellt.

$csv = new parseCSV(); 
$csv->auto($path); 
$full_data=$csv->data; 
+0

funktioniert nicht. Der gleiche Fehler kommt ... – Avishake

+0

Sie sicher, dass Composer Dump-Autoload ohne Warnungen oder Fehlermeldungen ausgeführt wurde? Weil ich es selbst vor dem Posten versucht habe und es für mich funktioniert hat. –

+0

Nein, es gibt keinen Fehler. – Avishake