Laravel 설명서를 읽었지만 아직 명확하지 않습니다. 나에게 모호하기 때문에 다른 개념과 관련하여 용어가 생길 때마다 새로운 개념을 이해하기 어렵습니다.누군가 Laravel 5 프레임 워크에 대한 "유형 힌팅"에 대한 정의를 제공 할 수 있습니까?
답변
타입 힌팅은 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을 참조하십시오.
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
참고로 'Illuminate \ Routing \ ControllerDispatcher 'resolveClassMethodDependencies()'함수를'Illuminate \ Routing \ RouteDepend '에서 호출한다. encyResolverTrait' 특성을 컨트롤러에 함수 인수로 배치 한 모든 매개 변수를 초기화합니다. –
이것은 실제 답변입니다! –
여기를 참조하십시오. http://php.net/manual/en/functions.arguments.php#functions.arguments.type-declaration – jszobody