"위 글에서는 make 메소드 실행 후 반환되는 인스턴스를 분석했습니다. 이번 글에서는 InvokeClass 메소드를 자세히 분석하겠습니다.
"
InvokeClass 메소드를 자세히 분석합니다(reflection 활용) )
위의 코드 흐름이나 위의 흐름도를 읽은 후 최종 코드는 한 방향으로만 진행된다는 것을 알아야 합니다invokeClass
, 이것이 메소드입니다. invokeClass
,就是这个方法。
这个方法中全部都是利用反射的知识点,不会的在去看上文或者之前的文章吧!
在invokeClass
方法中,最重要的就是绑定参数的这个方法bindParams
InvokeClass
방법, 가장 중요 매개변수를 바인딩하는 방법입니다bindParams
이 방법은 또한 리플렉션을 완전히 사용합니다. 그러므로 컨테이너에서의 반사의 역할에 대해서는 너무 많이 설명할 필요가 없습니다. 이전에 이 __make 메소드를 보고 깊게 생각났어요! 이 방법은 이전 config 소스 코드 구성 학습 글에서 당시 축적된 지식 포인트와 프레임워크 코드 실행 과정이 아직 __make 방법을 설명하는 단계가 아니었기 때문에 일시적으로 건너뛰었습니다. 🎜🎜컨테이너에서 __make 메소드의 역할을 자세히 설명하기 위해. 🎜reflect 변수의 값을 출력하면 아래와 같이 두 개의 Reflection 클래스 객체가 반환됩니다.
Code$reflect->hasMethod('__make ')
는 이 리플렉션 클래스에 __make 함수가 있는지 확인하는 것입니다$reflect->hasMethod('__make')
就是判断此反射类里边是否存在__make函数
代码$method = new ReflectionMethod($class, '__make');
就是执行反射类的一个方法 这里就指的是__make方法
当断点这个method就会返回俩个存在__make反射类,这里是因为断点了只有显示了俩个反射类。
这里主要谈论thinkConfig.
最后一行代码$method->isPublic() && $method->isStatic()
就是判断方法是不是公公共的 判断方法是不是静态的
直到运行到$args = $this->bindParams($method, $vars);
这行才会进入到bindParams
$method = new ReflectionMethod($class, '__make');
리플렉션 클래스를 실행하는 메소드입니다. 여기서는 __make 메소드를 말합니다중단점이 다음과 같을 때 도달하면 이 메서드는 두 개의 __make 리플렉션 클래스를 반환합니다. 이는 중단점으로 인해 두 개의 리플렉션 클래스만 표시되기 때문입니다. 🎜🎜여기서는 주로 thinkConfig에 대해 이야기합니다.🎜🎜마지막 줄 코드$method->isPublic() && $method- >isStatic( )은 메소드가 $args = $this->bindParams($method, $vars);
이 줄은 bindParams
방법을 사용하면 아래에서 자세한 분석도 제공됩니다. 🎜🎜invokeClass 메소드에 대한 자세한 분석은 주로 리플렉션 메커니즘을 사용하여 일련의 기능을 구현하고, 리플렉션을 사용하여 종속성 주입을 수행하고, 클래스에서 __make 메소드를 실행합니다🎜“배움에 대한 끈기, 블로그에 대한 끈기, 공유에 대한 끈기는 카카가 경력 이후부터 지켜온 신념입니다. 거대한 인터넷에 올라온 카카의 글이 여러분에게 조금이나마 도움이 되기를 바랍니다. 카카, 다음 호에서 만나요
”
위 내용은 ThinkPHP 컨테이너에서 리플렉션 사용의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!