2016-06-16 1 views

답변

4

타입 힌팅은 Laravel에만 국한되지 않습니다 ... 여기에 간단한 설명이 나와 있습니다. 타입 힌트없이

예 :

function foo ($arr = array(), $str = '') { 
    var_dump($arr); 
    var_dump($str); 
} 

이 함수는 제 파라미터로 배열하고, 상기 제로서 문자열을 기대하고있다. 그러나 그것을 강요하는 것은 없습니다. 나는 두 줄로 foo()라고 부를 수 있었고 아무런 문제가 없었습니다. 타입 힌트와

예 :

function foo (array $arr = array(), $str = '') { 
    var_dump($arr); 
    var_dump($str); 
} 

여기 유일한 차이점 $arr 전에 형 힌트 array이다. 이제 두 개의 문자열로 함수를 호출하면 치명적인 오류가 반환됩니다. 첫 번째 인수는 배열이어야하기 때문입니다.

더 많은 설명과 지원되는 유형 힌트를 찾으려면 documentation을 참조하십시오.

7

Laravel 서비스 컨테이너는 모든 Laravel 컨트롤러를 해결하는 데 사용됩니다. 결과적으로 컨트롤러가 생성자에서 필요로하는 종속성을 입력 힌트 할 수 있습니다. 선언 된 종속성은 자동으로 해결하고, 컨트롤러 인스턴스에 주입됩니다 : 당신이 볼 수 있듯이

<?php 

namespace App\Http\Controllers; 

use App\Repositories\UserRepository; 

class UserController extends Controller 
{ 
    /** 
    * The user repository instance. 
    */ 
    protected $users; 

    /** 
    * Create a new controller instance. 
    * 
    * @param UserRepository $users 
    * @return void 
    */ 
    public function __construct(UserRepository $users) 
    { 
     $this->users = $users; 
    } 
} 

는, 컨트롤러가 자동으로 앱 \ 저장소 \ UserRepository의 인스턴스를 생성되며,이 정말 편리합니다

이 기능에 대한 자세한 내용은 here

+0

참고로 'Illuminate \ Routing \ ControllerDispatcher 'resolveClassMethodDependencies()'함수를'Illuminate \ Routing \ RouteDepend '에서 호출한다. encyResolverTrait' 특성을 컨트롤러에 함수 인수로 배치 한 모든 매개 변수를 초기화합니다. –

+0

이것은 실제 답변입니다! –