Laravel의 반사 효과는 실제로 어떻게 작용합니까?Laravel의 리플렉션은 어떻게 작동합니까?
Laravel이 컨트롤러의 생성자 또는 리플렉션을 사용하여 종속성 및 하위 종속성을 해결 한 다음이를 다시 제공하는 방법을 디버깅하려고했습니다.
그러나 나는 그것을 열심히 찾았고,보고, 심지어는 50 %를 이해하는 것이 매우 복잡합니다. 클래스에서 클래스로 점프, 나는 그것을 정말로 볼 수 없다. 낮은 이해력으로 디버깅하여 몇 번 시도했습니다.
나는 이것과 반사에 깊은 인상을 받았으며 Laravel이 사용하는 방식으로 내 마음이 타박상을 입습니다. 단지 아름답습니다. 그리고 전 과정, 일반적으로 단계별로 완전히 이해하고 싶습니다. $x = new TestClass(new TestClass2());
나는 사람들이 생각 : 마지막으로 가지고 할 수있는 경로를 타격에서 시작
,의는, $x
가 메소드 인수에서이고를 통해 구성되어야한다 TestClass2
의 또 다른 의존성이있는 TestClass
입니다 dd($x)
을 가정 해 봅시다 아름다운 기계공 및 건축술 및 이것을 이해하는 것은 나가 아주 나쁘게 원한다 무언가이다.
다시, 제 질문은 : Laravel의 반영이 실제로 어떻게 작동합니까?
약 dd
들 ... 이제 dd
없이 가정 해 봅시다 아닙니다. 이전에 말했듯이 - class method
에서이 객체를 인스턴스화했을 때. 투기에 관한 것이 아니라 method injection
부터 reflection
까지입니다.
dd
은 예일뿐입니다. die(var_dump());
일 수도 있고 작동 할 수도 있습니다.
여기에 매우 광범위한 질문을하고 있습니다.이 질문은 * 어떻게 작동합니까? * 스타일 질문에 가장 적합한 포럼이 아닙니다. 'dd' 자체는 리플렉션을 사용하여 객체에 대한 개인 정보를 출력합니다. 의존성 주입 레이어는이를 사용하여 대상 클래스의 종속성을 재귀 적으로 검사합니다. 특히 Laravel과 관련된 것은 없습니다. 변수 또는 DI를 덤프하는 대부분의 패키지는 비슷한 작업을 수행합니다. – iainn
@iainn이 (가) 내 질문에 편집 됨 –
Laravel은 (는) 반사에만 관한 것이 아닙니다. 후드 아래에서 진행되는 많은 일이 있습니다. 다음 기사를 읽어보십시오. http://alanstorm.com/category/laravel/#container – Hamoud