2017-01-31 5 views
0

Sqlite3을 laravel에서 작동 시키려고합니다.Sqlite3은 laravel (5.4)에서 작동하지 않습니다. PHP 7

간단한 PHP 파일에서 훌륭하게 작동합니다!

<?php 


$handle = new SQLite3("mydb.db"); 

?> 

그러나 라우트 컨트롤러의 기능 안에서는 나쁘게 실패합니다.

<?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

SQLite3의 네임 스페이스를 가져 오지 않았습니다. – devk

+0

응답을 주셔서 감사합니다, 내게 네임 스페이스가 무엇인지 말해 주실 수 있습니까? 왜냐하면 내 일반적인 PHP 파일에서는 지정하지 않아도되기 때문입니다. –

+0

나는 그다지 알지 못한다 : D 그것은 커스텀 라이브러리인가 아니면 L5.4가 제공하는 것인가? 또한 그것이 작동하는 파일의 폴더 구조는 무엇입니까? (예를 들어 /project/test.php에서 시도한 경우 SQLite3도/project 폴더에있을 수 있습니까?). – devk

답변

0

:

Laravel은 PSR-4 네임 스페이스 지정에 의해 구동된다
Use SQLite3; 

이는 기본적으로 디렉토리 구조 내의 파일을 가리키고 있으므로 서로 다른 라이브러리는 서로의 발가락을 밟지 않고 동일한 클래스 이름을 가질 수 있습니다.

SQLite 클래스의 네임 스페이스를 선언하지 않으면 클래스를 호출 한 곳이기 때문에 클래스가 컨트롤러와 동일한 폴더에 있다고 생각합니다.

PHP에 포함 된 SQLite3 클래스는 'SQLite3'로 시작하는 네임 스페이스를 가지므로 맨 위에 선언하면 해당 클래스에 대한 참조가 해당 스크립트를 가리 킵니다.

0

네임 스페이스 문제입니다. SQLite3 클래스가 포함되어 있지 않은 App\Http\Controllers 네임 스페이스에 있습니다.

파일 상단에 use 문이있는 경우 목록에 추가하기 만하면됩니다.

use SQLite3; 

이제 오류가 발생하지 않아야합니다.

더 설명서 읽기 : 다음과 같은 선언을 추가, 다른 사용 지침을 참조 컨트롤러의 상단에서 Using namespaces: Aliasing/Importing