2014-09-24 15 views
1

이것은 간단한 질문 일 수 있지만 모든 단일 파일에서 use 문을 선언하지 않고 유용한 클래스를 자동로드하는 방법은 궁금합니다.Laravel의 네임 스페이스 및 자동 로딩

<?php namespace App\Http\Controllers; 

use Illuminate\Routing\Controller; 
use Illuminate\Support\Facades\Input; 

class HomeController extends Controller 
{ 
    public function index() 
    { 
     Input::get('query'); 
    } 
} 

나는 사용하기를 분명히 \ 지원 \ 외관 \ 입력을 제거하는 경우; line 입력 클래스를 사용 중이므로 클래스를 찾을 수 없습니다. 오류가 발생합니다.

입력, 응답,보기와 같은 유용한 클래스를 Laravel 4 에서처럼 자동로드하는 방법이 있습니까? app.php의 별칭은 무엇입니까?

답변

1

문제는 Laravel이 아니라 PHP입니다. 클래스의 네임 스페이스를 설정하면 해당 클래스의 모든 내용이 동일한 네임 스페이스에 있다고 가정하므로 특정 클래스의 경우 다른 네임 스페이스를 사용해야한다고 지정할 수 있습니다.

이 같은 루트 네임 스페이스를 참조하여 사용할 수 있습니다 : 당신을

use Illuminate\Support\Facades\Input; 

또는

use Input; 

:

class HomeController extends Controller 
{ 
    public function index() 
    { 
     \Input::get('query'); 
    } 
} 
+0

감사합니다. 뿌리에 블랙 슬래시를 사용하는 것을 잊어 버렸습니다. 이제 app.config의 별칭으로 이해할 수 있습니다. – Yada

2

당신은 모두를 사용하여 입력 클래스를 가져올 수 있습니다 Input::get('query'); 코드를 사용할 수 있습니다. 이것이 PHP 네임 스페이스의 작동 방식입니다. 자세한 내용은 How to use objects from other namespaces and how to import namespaces in PHP을 참조하십시오.

클래스 가져 오기에 use 문을 사용하지 않으면 \Input::get('query'); 또는 \Illuminate\Support\Facades\Input::get('query');을 사용할 수 있습니다.

별칭을 사용하면 \Illuminate\Support\Facades\Input과 같이 정규화 된 클래스를 사용하지 않고 더 짧은 양식 \Input을 사용할 수 있습니다. 그래서 위의 2 가지 버전을 보여 줬습니다. 짧은 버전은 별칭을 사용하고 길면 길수록 전체 클래스 경로를 사용합니다. 동일한 메커니즘이 Laravel 4와 Laravel 5 모두에 있습니다.