Sqlite3 在 laravel (5.4) Php 7 中不起作用
Sqlite3 does not work inside 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
为什么会这样?
这是一个命名空间问题。您位于 App\Http\Controllers
命名空间中,该命名空间不包含任何 SQLite3
class.
如果文件顶部有 use
语句,只需将其添加到列表中即可。
use SQLite3;
现在您应该不会再收到该错误了。
在手册中阅读更多内容:Using namespaces: Aliasing/Importing
在控制器的顶部,您可以看到其他使用指令,添加以下声明:
Use SQLite3;
Laravel 由 PSR-4 命名空间驱动,它基本上指向目录结构中的一个文件,因此不同的库可以具有相同的 class 名称,而不会互相干扰。
除非您为 SQLite class 声明命名空间,否则它认为 class 与您的控制器位于同一文件夹中,因为这是您调用它的地方。
包含在 PHP 中的 SQLite3 class 有一个以 'SQLite3' 开头的命名空间,因此通过在顶部声明它,任何对该 [=21= 的引用] 将指向正确的脚本。
我正在尝试让 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
为什么会这样?
这是一个命名空间问题。您位于 App\Http\Controllers
命名空间中,该命名空间不包含任何 SQLite3
class.
如果文件顶部有 use
语句,只需将其添加到列表中即可。
use SQLite3;
现在您应该不会再收到该错误了。
在手册中阅读更多内容:Using namespaces: Aliasing/Importing
在控制器的顶部,您可以看到其他使用指令,添加以下声明:
Use SQLite3;
Laravel 由 PSR-4 命名空间驱动,它基本上指向目录结构中的一个文件,因此不同的库可以具有相同的 class 名称,而不会互相干扰。
除非您为 SQLite class 声明命名空间,否则它认为 class 与您的控制器位于同一文件夹中,因为这是您调用它的地方。
包含在 PHP 中的 SQLite3 class 有一个以 'SQLite3' 开头的命名空间,因此通过在顶部声明它,任何对该 [=21= 的引用] 将指向正确的脚本。