У меня есть файл CSV с именем beatles.csv
, который имеет следующее содержание по каждой ячейке:Как получить данные в формате CSV, используя SplFileObject в Laravel 5,4
John,Paul,George,Ringo
В ванильной PHP, этот код работает без проблем (CSV-файл находится в то же самое место, что и скрипт):
$data = 'beatles.csv';
$file = new SplFileObject($data);
$file->setFlags(SplFileObject::READ_CSV);
foreach ($file as $row) {
echo $row[0].'<br>'; // outputs John
}
В Laravel 5.4, я создал папку с именем MyDomainName
в папке app
и я положил CSV файл там так его пространство имен следующим образом:
use App\MyDomainName;
А содержание моего метода на контроллере, который должен принести данные CSV выглядит следующим образом:
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\MyDomainName;
class PageController extends Controller
{
public function fetchCSV()
{
$file = new SplFileObject('beatles.csv');
$file->setFlags(SplFileObject::READ_CSV);
foreach ($file as $row){
dd($row[0]);
}
}
}
И я получаю этот вопрос:
FatalThrowableError in PageController.php line 67: Class 'App\Http\Controllers\SplFileObject' not found
Я думал, что с помощью use App\MyDomainName;
он решит проблему, но все равно не решит ее.
Я также явно использовал полный путь, но все же он не работал.
$file = new \App\MyDomainName\SplFileObject('App\MyDomainName\beatles.csv');
и я все еще получаю ту же ошибку:
FatalThrowableError in PageController.php line 67:
Class 'App\MyDomainName\SplFileObject' not found
Что может быть вопрос почему это, что SplFileObject
класс не может быть найден?
Пространства имен! Пространства имен! Пространства имен! 'SplFileObject' находится в пространстве имен __global__; поэтому '$ file = new \ SplFileObject ('beatles.csv');' и '$ file-> setFlags (\ SplFileObject :: READ_CSV);' –
Я также рекомендую посмотреть http://csv.thephpleague.com / – fubar