CakePHP3의 Middleware 도입
이것이군요. CakePHP3.3에서 도입된 기능이군요.
htp // 보오 k. 곱셈 php. 오 rg / 3.0 / 그럼 / 안 t 롯 rs / 미 d d. HTML
Middleware는 무엇입니까?
액세스에 대한 요청, 응답에 처리를 끼울 수 있습니다.
처리를 사이에 둔다고 하면, Controller에는
initialize
라든지 있습니다만 보다 전에 처리를 사이에 끼울 수가 있습니다. 됩니다.또한
PSR-7
와 호환되므로 Packagist
등에서 공개된 PSR-7
호환 라이브러리를 이용할 수 있습니다.예를 들어, Laravel에서 사용되는 Middleware를 CakePHP에서 사용하는 것도 가능합니다. (Laravel에 의존하지 않는 경우)
어느 시점에서 움직이는 거야?
초기라면 이하의 순서로 동작합니다.
이 그림과 같이 Middleware를 여러 겹쳐 가는 이미지로 동작합니다.
어떤 곳에서 사용할 수 있습니까?
인증이나 리퀘스트 오브젝트나 응답 오브젝트의 가공, IP 주소 제한 등 어플리케이션이 기동하기 전의 처리등은 적절한 처리라고 말할 수 있다고 생각합니다.
응답측이라면, 로그 출력이나 실행 시간의 계측 등이 좋은 것일까요.
위의 그림에서도 그렇습니다만, initialize는 어플리케이션이 기동한 후에가 됩니다.
인증 등은 기동 전의 처리로 좋은 것은 여러 가지 있다고 생각됩니다.
Middleware 샘플
1 메소드 중에서, 요청 처리, 응답 처리를 실시합니다.
버릇이 있습니다.
<?php
// src/Middleware/TrackingCookieMiddleware.php の中で
namespace App\Middleware;
class TrackingCookieMiddleware
{
public function __invoke($request, $response, $next)
{
// ここでリクエスト処理
$response = $next($request, $response);
// ここでレスポンス処理
return $response;
}
}
Middleware 사용법
Middleware 시작과 같은 설정은
src/Application.php
에 설명되어 있습니다.필요한 Middleware를 추가합니다.
주의점으로서는, 작성한 Middleware의
__invoke
에 request, response 오브젝트가 건네 옵니다만,각각
Zend\Diactoros\ServerRequest
, Zend\Diactoros\Response
로 되어 있으며 Cake\Network\Request
, Cake\Network\Response
와는 다른 점에 주의가 필요합니다.webroot/index.php
의 $server->run()
의 인수에 이용하고 싶은 오브젝트를 건네주면(자), Cake\Network\Request
, Cake\Network\Response
등 사용하고 싶은 오브젝트로 전환하는 것이 가능합니다.메인터넌스 화면 표시용 플러그인 만들어 보았다
Middleware를 공부하면 Maintenance 플러그인을 만들어 보았습니다.
쉽게 유지 보수 화면으로 전환하는 플러그인이됩니다.
htps : // 기주 b. 코 m/후시 c/마인테나세/
,
Reference
이 문제에 관하여(CakePHP3의 Middleware 도입), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kozo/items/0d08a47307711c8f0382텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)