$ composer require troublete/monty
<?php
require_once ' path/to/vendor/autoload.php ' ;
$ application = new Monty Application ();
$ application -> get (
' /request[/{someId}] ' ,
function ( Monty Request $ req , Monty Response $ res , $ someId ) {
// do some awesome stuff
return new Symfony Component HttpFoundation JsonResponse ([]);
}
); 경로 구문 분석은 BE @Nikic을 만든 Fastroute 패키지를 기반으로하므로 대부분 Fastroute에서 지정된 경로를 정의 할 수 있어야합니다. 경로 일치는 Delimiter가 @ 로 설정된 PCRE 를 통해 수행되므로 사용자 정의 된 Regex 매개 변수를 @ 와 설정할 때 알아야합니다. 경로 정의는 [] 로 표시된 정의 끝에 가변 부품을 허용합니다. 이것은 가능하기 때문에 일치하는 것은 후손 복잡성 순서대로 여러 정규 표현을 시도하고 첫 번째 패턴 일치에서 돌아올 것입니다.
유효한 라우팅
/search/{searchId} => routing with parameter
/search/{searchId:d+} => routing with parameter with defined regex
/search[/{searchId}] => routing with optional parameter
/search/index[es] => routing with optional part
잘못된 라우팅
/search/index[es]/{searchId} => optional chunk in the middle
수신 요청과 일치하자마자 정의 처리 순서대로 정의가 처리됩니다.
또한 Monty는 요청 및 응답 중심으로 설계되었으며, 신청서에 대한 하나의 요청이 한 번 처리되므로 수명주기 중에 필요한 모든 것이 요청 또는 응답 개체에 포함되어야합니다.
정의의 핸들러는 callable 배열이며 정의 일치 순서대로 동기식으로 실행됩니다. 전후에 실행되도록 등록 된 중간 전위는이 "통화 스택"에 통합되어 있습니다.
핸들러에서 응답 객체가 반환되면 프로세스 응답으로 해석되며 재설정 할 수는 없습니다 (그러나 수정).
응용 프로그램은 Monty의 주요 구성 요소입니다. 경로 처리기, 중간 전쟁 및 추가 요청 및 응답 설정을 처리합니다. 일반적으로 네 가지 다른 사용 사례가 포함됩니다. 현재 요청 프로세스의 요청 또는 응답 객체에 액세스하고, 경로 처리기 등록 및 수명주기 중에 실행될 중간 전위 등록.
사용 사례 메소드 외에도 코드를 훨씬 이해하기 쉽고 매끄럽게 만들기위한 별칭 메소드의 인터페이스가 포함되어 있습니다.
이 메소드는 발송 해야하는 요청 메소드 모음과 관련하여 특정 경로에 대한 새로운 요청 처리기를 등록합니다.
| 논쟁 | 유형 | 설명 |
|---|---|---|
| $ 방법 | 끈[] | 대문자의 요청 방법 수집. |
| $ 경로 | 끈 | 핸들러가 등록되는 경로. |
| ... $ 핸들러 | 호출 가능한 [] | 실행 될 핸들러 수집. |
// ...
$ app -> handle (
[ ' GET ' ],
' /index ' ,
function ( $ req , $ res ) { /*...*/ },
function ( $ req , $ res ) { /*...*/ },
function ( $ req , $ res ) { /*...*/ }
// ...
);
// ... | 방법 | 설명 |
|---|---|
| 모두 ($ Route, ... $ 핸들러) | 모든 요청 방법에 반응하는 별칭 방법 |
| get ($ route, ... $ 핸들러) | 요청을 받기 위해 반응하는 별칭 방법 |
| 게시물 ($ route, ... $ 핸들러) | 사후 요청에 반응하는 별칭 방법 |
| 헤드 ($ route, ... $ 핸들러) | 헤드 요청에 반응하는 별칭 방법 |
| 옵션 ($ Route, ... $ 핸들러) | 옵션 요청에 반응하는 별칭 방법 |
| 패치 ($ route, ... $ 핸들러) | 패치 요청에 반응하는 별칭 방법 |
| put ($ route, ... $ 핸들러) | 요청을 넣기 위해 반응하는 별칭 방법 |
| 삭제 ($ route, ... $ 핸들러) | 요청 삭제 에 반응하는 별칭 방법 |
이 메소드는 요청 방법에 관계없이 실행되는 추가 처리기를 등록합니다.
| 논쟁 | 유형 | 설명 |
|---|---|---|
| $ 배치 | 정수 | 핸들러를 실행 해야하는 경우 요청 수명주기 위치 (Application :: Prepend- 이전, Application :: Appect). |
| ... $ 핸들러 | 호출 가능한 [] | 실행 될 핸들러 수집. |
// ...
$ app -> middleware (
Monty Application:: PREPEND ,
function ( $ req , $ res ) { /*...*/ },
function ( $ req , $ res ) { /*...*/ },
function ( $ req , $ res ) { /*...*/ }
// ...
);
// ... | 방법 | 설명 |
|---|---|
| 전 (... $ 핸들러) | 실제 요청 처리 전에 실행 된 요청 처리기를 추가 할 별칭 방법 |
| After (... $ 핸들러) | 실제 요청 처리 후 실행 된 요청 처리기를 추가 할 별명 방법 |
이 메소드는 현재 요청 객체를 검색합니다.
이 메소드는 현재 응답 객체를 검색합니다.
요청 객체는 프로세스의 중심 부분입니다. 요청 중에 필요한 부동산 및 서비스를 추가 할 수있는 가능성이 포함되어 있습니다. 해당 처리와 함께 요청 객체는 작게 유지되며 필요한 경우에만 필요한 종속성 만 등록됩니다.
메소드 요청 IP를 검색하는 방법.
메소드 요청 된 컨텐츠 유형 헤더 값을 검색하는 방법.
방법 $ _files 매개 변수를 검색하는 방법.
이 방법을 사용하여 요청에 따라 설정된 속성 또는 서비스를 검색 할 수 있습니다.
| 논쟁 | 유형 | 설명 |
|---|---|---|
| ... $ 매개 변수 | 혼합 | 매개 변수 수집은 세터 방법으로 오랫동안 전달되었습니다. |
// ...
$ request -> get ( ' logger ' , new SomeDefault ());
$ request -> get ( ' property ' , ' some default value ' );
// ... 방법 monty 요청 객체에 내장 된 원시 요청을 검색하는 방법.
방법 프로토콜을 포함한 HTTP 호스트를 검색하는 방법.
메소드 요청 메소드가 특정 값인지 확인하는 방법.
| 논쟁 | 유형 | 설명 |
|---|---|---|
| $ 방법 | 끈 | 확인 방법을 확인하십시오. |
전송 된 요청이 보안인지 확인하는 방법 (https/ssl).
메소드 요청 경로를 검색하는 방법.
방법 스택에서 이전 핸들러의 반환 값을 검색하는 방법.
방법 $ _get 매개 변수를 검색하는 방법.
메소드 요청 메소드를 검색하는 방법.
방법 $ _post 매개 변수를 검색하는 방법.
방법 경로 매개 변수를 검색하는 방법 값 값은 경로 핸들러 인스턴스와 일치합니다.
이 메소드는 통화 스택을 따라 액세스 할 수있는 요청에 클래스 인스턴스 또는 속성을 추가하는 데 사용될 수 있습니다. 일반적으로 메소드는 두 가지 이상의 매개 변수, 먼저 속성/서비스의 ID를 문자열로, 두 번째로 스칼라 또는 객체 값을 취합니다.
지저분한 코드 및 리소스 벌킹을 피하기 위해 어레이는 요청 속성으로 설정할 수 없습니다.
| 논쟁 | 유형 | 설명 |
|---|---|---|
| ... $ 매개 변수 | 혼합 | 매개 변수 수집은 세터 방법으로 오랫동안 전달되었습니다. |
// ...
$ request -> set ( ' logger ' , new SomeLogger ()); // valid
$ request -> set ( ' property ' , ' some value ' ); // valid
$ request -> set ( ' not_possible ' , []); // invalid
// ... 이전 핸들러 리턴을 설정하는 방법.
| 논쟁 | 유형 | 설명 |
|---|---|---|
| $ 값 | 혼합 | 이전 핸들러의 반환 값. |
방법 요청으로 설정된 경로 매개 변수를 업데이트하는 방법.
| 논쟁 | 유형 | 설명 |
|---|---|---|
| $ params | 정렬 | 설정할 경로 매개 변수. |
응답 객체는 일반적으로 자체를 해결하는 것으로 가정합니다. 즉, 정의 된 응답이 응용 프로그램 응답에서 어떻게 렌더링되어야 하는지를 처리해야합니다. Symfony HTTP 구성 요소 응답 객체를 사용하거나 Monty ResponseInterface를 구현 해야하는 자신의 것을 정의 할 수 있습니다.
핸들러는 경로 처리기 정의 또는 미들웨어에 등록되는 callable 으로 정의됩니다.
핸들러는 간단한 람다 기능, 클로저 객체, 클래스 등이 될 수 있습니다 . 여기에 제한이 없습니다.
© 2017 Willi Eßer