다음은 $this->parent에 대한 설명입니다. object(thinkrouteDomain), 라우팅해야 함 이 문서의 첫 번째 섹션 3과 fullName이 이 단계에서 할당됩니다.
마지막 단계는 fullName에 값을 할당하는 것입니다. 실제로는 fullName에 라우팅 규칙을 할당하는 것입니다.
그룹의 라우팅 규칙을 설정하세요
그런 다음 상위 레이어로 돌아가서 다음 작업을 확인하세요.
상위 파일로 돌아가 소스코드를 계속해서 읽어보세요
그룹의 라우팅 규칙을 설정한 후 일부 속성, 주로 다음 세 가지에 값을 할당해야 합니다.
라우팅 변수 규칙
라우팅 매개변수
REST 라우팅 방법 정의
속성 할당에 대해서는 말할 것도 없고, 해당 속성이 무엇을 하는지 이해하면 됩니다. 다음 단계는 요청 메소드를 키 값으로 사용하고 $this를 값으로 사용하여 이 클래스의 인스턴스를 반환하고 이 라우팅 메소드가 주석 라우팅인지 확인하는 것입니다. 반환된 결과는 모든 사람이 간략하게 볼 수 있도록 인쇄됩니다. 내용은 가로채지 않았으므로 값이 무엇인지만 알면 됩니다.
결과 반환
🎜🎜위 실행 후 상위 레이어로 돌아가 게으른 메서드를 실행합니다🎜
먼저 전달된 매개변수가 무엇인지 알아보세요. 파싱 시 경로가 지연되는지 여부
상위 레이어로 돌아가는 코드를 실행한 후
그러면 게으른 메소드가 나옵니다
lazy method
이 메서드에는 Call ParseGroupRule이 있으며 전달된 매개 변수는 그룹의 라우팅 규칙이므로 이 섹션에서는 라우팅 그룹화에 대해 다루지 않습니다.
그룹 라우팅 규칙지금까지 리소스 라우팅에 대해 간략하게 이야기하겠습니다
마지막으로 카카가 모두를 위한 실행 마인드맵을 그려드립니다
리소스 이유 실행 프로세스
3 . 도메인 이름이 설정된 시점에 대해서는사실 이전 섹션에 이런 코드가 있습니다
$this->parent->getDomain() 메소드 이름에 따르면 이 코드 라인은 요청한 도메인 이름
그런데 이 도메인 이름이 어디에 설정되어 있는지 다들 아시죠?
이 리소스 경로를 요청하면 Route 클래스의 생성자가 실행됩니다
리소스 라우팅
요청된 도메인 이름을 가져오는 생성자에 다음과 같은 코드 줄이 있습니다.
생성자
가 호스트 메서드로 이동합니다
호스트 메서드에서 다음과 같습니다. 매개변수는 true
여기만 주의하면 됩니다$ this->server(' HTTP_HOST')를 사용하면 도메인 이름 주소를 얻을 수 있습니다$this->server('HTTP_HOST')即可,就是用来获取域名地址的
카카가 동그라미 친 두 번째 부분을 보면 첫 번째 조건은 성립했지만 두 번째 조건은 성립하지 않은 것을 볼 수 있습니다 따라서 $this-> ;호스트호스트 방법
Print$this- >host, 왜 두 번 실행되는지 설명하지 않겠습니다. 궁금한 점이 있으면 debug_backtrace를 확인하세요.
🎜🎜🎜결과를 인쇄하세요🎜🎜🎜그러면 기본 도메인 이름을 초기화하는 방법이 실행됩니다🎜🎜여기서 도메인 이름이 초기화됩니다🎜기본 도메인 이름 방법을 초기화합니다
이때 분명히 thinkphp/library/think/route/Resource.php이 클래스에서 실행됩니다! thinkphp/library/think/route/Resource.php这个类里边执行的啊!
设置域名地址是在thinkphp/library/think/Route.php
thinkphp/library/think / Route.php가 이 클래스에 있습니다! 생각해보면 바로 상속관계 때문이라는 걸 알 수 있죠! thinkphp/library/think/route/Resource.php이 시점에서 이 도메인 이름의 설정이 매우 명확해야 합니다. 그래도 이해가 되지 않는다면 Kaka가 작성한 기사를 더 읽어보세요! Kaka 기사를 작성하는 데는 몇 시간이 걸리지만 읽는 데는 몇 분 밖에 걸리지 않습니다. 코드 작업을 천천히 진행하세요. 원하는 것은 효율성이 아니라 품질입니다! 이제까지 도메인 이름이 설정되는 시점에 대한 설명을 마쳤습니다. 다음으로 라우팅 구성-배열 구성
4. 라우팅 구성-배열 구성 해석
사실입니다. , 여기 읽은 후 많은 사람들이 약간 혼란 스러울 것으로 예상됩니다. 대부분은 이것이 무엇을 의미하는지, 이것이 어디에 있는지 이해하지 못합니다! 사실 이 구성은 5.1 이후에만 가능했습니다. 이전 버전에는 이 구성이 없었습니다. 이 구성의 위치는 실제로 우리가 연구했던 경로 내부에 있을 것이라고 예상하지 못했습니다! 그 만큼 강력합니다. 라우팅 구성에서의 복귀입니다. 🎜라우팅 구성 파일
라우팅 파일 로드를 검토해 보겠습니다!
첫 번째는 항목 파일입니다. 이에 대해서는 의심의 여지가 없습니다.
원으로 표시된 부분은 App의 인스턴스를 반환합니다. 이해가 되지 않으면 컨테이너에 대한 기사를 읽어보세요.
따라서 이 코드 줄은 App 클래스의 run 메서드에 실행됩니다.
항목 파일
그럼 이 클래스의 실행 메소드를 살펴보겠습니다. thinkphp/library/think/App.php
직접 볼 수 있는 것이 초기화 어플리케이션입니다.
초기화 애플리케이션초기화 애플리케이션에 오시면 Route 초기화에 대해 보실 수 있습니다
Route 초기화routeInit 메소드로 오세요라우팅 구성을 가져올 때 이에 대한 판단이 있습니다. 여기서 판단은 라우팅 구성 파일의 어레이 구성을 기반으로 합니다.
라우팅 구성 가져오기이 시점에서는 라우팅 구성이 로드되는 시점을 어느 정도 이해해야 합니다. 하지만 문서에는 어레이 모드에서 라우팅을 구성하는 것에 대한 언급이 없습니다. 이는 사용 사례가 없음을 의미합니다.
사용 방법만 알아보세요. 🎜🎜$this->route-> import($rules);Kaka가 이 코드 줄을 설명하고 있습니다. 🎜🎜실제로는 $this->route code>Route 클래스로 실행될 수 있는 이유는 무엇입니까? 🎜🎜먼저 알아야 할 것은 App 클래스가 Container 클래스를 상속한다는 것입니다🎜상속 관계🎜 그런 다음 Container 클래스 끝에는 여러 가지 매직 메서드가 있습니다. 🎜컨테이너 매직 방법 / figcaption>🎜앱에서 존재하지 않는 Route 클래스가 호출되면 __get 매직 메서드가 실행됩니다. 🎜🎜그러면 __get 매직 메서드의 make 메서드가 실행됩니다. 🎜🎜 이 방법에 대해 Kaka는 컨테이너에 대한 기사를 세 번 이상 읽었습니다. 🎜컨테이너 클래스에서 make method🎜그런 다음 행진을 계속하여 thinkphp/library/think/Route.php는 구성 파일의 라우팅 규칙인 가져오기🎜
이 방법에서 몇 가지 친숙한 변수 규칙을 볼 수 있습니다
그런 다음 간단한 테스트에 이 값을 사용하세요
가져온 구성 파일의 라우팅 규칙을 감지합니다
두 번째 섹션에서 리소스 라우팅에 대해 설명한 후 테스트 조건으로 리소스 라우팅 확인을 사용하세요
이전에 설정된 리소스 라우팅 구성을 꺼야 합니다. 그렇지 않으면 테스트할 수 없습니다
라우팅 구성 파일
이렇게 진행하세요 시간 한 번만 방문
네 그렇죠 사용법이 너무 간단해요
결과 조회
실제로 배열 메소드 구성 라우팅은 리소스 라우팅과 동일하고 실행 순서일 뿐입니다
결국 , 전달됩니다. 라우팅 규칙을 리소스 메서드
Execute 리소스
이 또한 실행되는 메서드입니다
resource 메서드
이 섹션에서는 이에 대해 간략하게 설명합니다. 라우트 초기화에 대한 특정 필요성을 이해하고
라우팅 배열 구성을 사용하는 방법을 배웁니다
이 방법은 이전 버전인 5.1이나 출시된 버전 6.0에서는 자주 사용되지 않으며, 전혀 사용되지 않을 것이라고도 할 수 있습니다
여기서 언급하는 이유는 라우팅 초기화 프로세스를 검토하고 어레이 구성 라우팅의 용도가 무엇인지 알아보기 위함입니다.
질문이 있는 경우 해결하지 않은 채로 두지 말고 해결해야 합니다
위 내용은 ThinkPHP 라우팅 매개변수 및 리소스 라우팅 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!