>  기사  >  PHP 프레임워크  >  ThinkPHP 컨테이너에서 리플렉션 사용

ThinkPHP 컨테이너에서 리플렉션 사용

咔咔
咔咔원래의
2020-10-12 12:55:191875검색
"

위 글에서는 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

code$method = new ReflectionMethod($class, '__make');리플렉션 클래스를 실행하는 메소드입니다. 여기서는 __make 메소드를 말합니다

중단점이 다음과 같을 때 도달하면 이 메서드는 두 개의 __make 리플렉션 클래스를 반환합니다. 이는 중단점으로 인해 두 개의 리플렉션 클래스만 표시되기 때문입니다. 🎜🎜여기서는 주로 thinkConfig에 대해 이야기합니다.🎜🎜마지막 줄 코드$method->isPublic() && $method- >isStatic( )은 메소드가 $args = $this->bindParams($method, $vars);이 줄은 bindParams 방법을 사용하면 아래에서 자세한 분석도 제공됩니다. 🎜🎜invokeClass 메소드에 대한 자세한 분석은 주로 리플렉션 메커니즘을 사용하여 일련의 기능을 구현하고, 리플렉션을 사용하여 종속성 주입을 수행하고, 클래스에서 __make 메소드를 실행합니다🎜

배움에 대한 끈기, 블로그에 대한 끈기, 공유에 대한 끈기는 카카가 경력 이후부터 지켜온 신념입니다. 거대한 인터넷에 올라온 카카의 글이 여러분에게 조금이나마 도움이 되기를 바랍니다. 카카, 다음 호에서 만나요

위 내용은 ThinkPHP 컨테이너에서 리플렉션 사용의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.