Я пытаюсь заставить Sqlite3 работать на Laravel.
В простом php-файле это прекрасно работает!
<?php$handle = new SQLite3("mydb.db");
?>
однако внутри функции контроллера Laravel это плохо.
<?php
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
use Illuminate\Http\Request;
use Illuminate\Contracts\Cookie\Factory;
class HomeController extends Controller
{
/*
|--------------------------------------------------------------------------
| Home Controller
|--------------------------------------------------------------------------
|
| This is the home - dasboard controller,
| where you land if you visit the site the first time
| ror are redirected from the login page.
|
*//**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('customauthorize');
}
public function Index(Request $request, Factory $cookie)
{
$handle = new SQLite3("mydb.db");
return view('welcome');
}
}
?>
На самом деле он даже представляет волнистую линию на моем объекте Sqlite3.
Class 'App\Http\Controllers\SQLite3' not found
Почему это происходит?
В верхней части вашего контроллера, где вы видите другие директивы использования, добавьте следующее объявление:
Use SQLite3;
Laravel управляется пространством имен PSR-4, которое в основном указывает на файл в структуре каталогов, поэтому разные библиотеки могут иметь одинаковые имена классов, не наступая друг другу на пальцы.
Если вы не объявите пространство имен для класса SQLite, он думает, что класс находится в той же папке, что и ваш контроллер, потому что именно там вы его вызвали.
Класс SQLite3, включенный в PHP, имеет пространство имен, начинающееся с «SQLite3», поэтому, объявив его сверху, любая ссылка на этот класс будет указывать на соответствующий скрипт.
Это проблема пространства имен. Вы находитесь в App\Http\Controllers
пространство имен, которое не содержит SQLite3
учебный класс.
Просто добавьте его в список, если use
заявления в верхней части вашего файла.
use SQLite3;
Теперь вы не должны больше получать эту ошибку.
Читайте больше в руководстве: Использование пространств имен: алиасинг / импорт