2014-09-03 1 views
0

절차를 익힌 후에 PHP에서 OOP를 배우려고 노력 중이며 일부 이론을 공부 한 후 Laravel 프레임 워크를 사용하여이를 적용하려고합니다. 내 책에서 라우팅에 대한이 코드 부분을 발견했지만 실제로 OOP에서 이해할 수는 없습니다.Laravel 라우팅의 코드 라인에 대한 이해

내가 틀리면 첫 번째 부분은 나에게 'Route'클래스의 정적 메서드로 보이지만 두 번째 부분은 '-> 여기서'id ','[0-9] + ');' 동적이고 인스턴스에 비례하는 것처럼 보이고 나를 혼란스럽게합니다.

누군가 이해해 주시겠습니까?

Route::get('cats/{id}', function($id){ 
return "Cat #$id"; 
})->where('id', '[0-9]+'); 
+0

간단히 말해,'Route :: get()'은'where()'메소드를 가진 객체 (아마도'Route'의 인스턴스)를 반환합니다. http://laravel.com/api/source-class-Illuminate.Routing.Route.html#309-323을 참조하십시오 (비록 어디에도'Route :: get()'을 찾을 수 없습니다) – Phil

+0

@Phil 나는 추측하고 있습니다. 그는 [0-9] + 부분에 대해서도 묻고 있습니다. 정규식처럼 보입니다. –

+0

감사합니다 @Phil,하지만 너무 get() 메서드를 찾을 수 없습니다. Andrewp 아니요, 정규식을 알고 있습니다 – GabAntonelli

답변

4

If I'm not wrong, the first part seems to me a static method of a 'Route' class 죄송하지만 잘못된 것입니다. 사실 Laravel은 각 구성 요소에 대해 Facade 클래스를 제공하며 여기에서 RouteRouter 클래스의 Facade입니다. 당신은 단지 하나 개의 방법이 포함되어 있음을 알 수 있으며,이 방법을 포함하는 original/underlying 클래스 이름을 반환

<?php namespace Illuminate\Support\Facades; 

/** 
* @see \Illuminate\Routing\Router 
*/ 
class Route extends Facade { 

    /** 
    * Get the registered name of the component. 
    * 
    * @return string 
    */ 
    protected static function getFacadeAccessor() { return 'router'; } 

} 

실제로는 클래스에 추가하여 key 이름이다,이처럼 그 Facade 클래스는 모습입니다 IoC 컨테이너. 따라서 장면 뒤의 LaravelIoC 컨테이너에서 Illuminate/Routing/Router.php 클래스의 인스턴스를 만들고 method을 호출합니다. 사용자에게 명확하지 않을 수 있지만 약간 자세한 내용은 여기에서 자세히 설명 할 수는 없지만 Laravel facade 및 그것의 더 나은 설명을 얻으십시오.

그래서, 마지막으로 Laravel 통화량 Router.php 클래스 get() 방법은 Route 클래스/객체의 인스턴스 다음 방법 체인 (PHP-5 기능)를 사용하여 전화를받을 Route 클래스의 where 방법을 반환, 그게 다야. 클래스의 소스 코드를 읽으면 더 좋은 아이디어를 얻을 수 있습니다.

Illuminate\Support\Facades 폴더를 확인하면 원본 클래스/구성 요소 위에 실제로 많은 래퍼 인 많은 facade 클래스를 찾을 수 있습니다. Laravel의 설명서에서 IoC container을 확인하십시오. Laravel 프레임 워크에서 작동하는 것이 확실합니다.

+2

이것은 매우 흥미롭고 훌륭한 답변입니다. 좋은 것. –

+0

엄지 손가락을 줘서 고마워 :-) –