Sqlite3 не работает внутри laravel (5.4) Php 7

Я пытаюсь заставить 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

Почему это происходит?

0

Решение

В верхней части вашего контроллера, где вы видите другие директивы использования, добавьте следующее объявление:

Use SQLite3;

Laravel управляется пространством имен PSR-4, которое в основном указывает на файл в структуре каталогов, поэтому разные библиотеки могут иметь одинаковые имена классов, не наступая друг другу на пальцы.

Если вы не объявите пространство имен для класса SQLite, он думает, что класс находится в той же папке, что и ваш контроллер, потому что именно там вы его вызвали.

Класс SQLite3, включенный в PHP, имеет пространство имен, начинающееся с «SQLite3», поэтому, объявив его сверху, любая ссылка на этот класс будет указывать на соответствующий скрипт.

1

Другие решения

Это проблема пространства имен. Вы находитесь в App\Http\Controllers пространство имен, которое не содержит SQLite3 учебный класс.

Просто добавьте его в список, если use заявления в верхней части вашего файла.

use SQLite3;

Теперь вы не должны больше получать эту ошибку.

Читайте больше в руководстве: Использование пространств имен: алиасинг / импорт

0

По вопросам рекламы [email protected]