SlimMiddleware
call()
add()
add()
미들웨어 구현 메소드를 재정의하는 클래스를 작성하면됩니다. 미들웨어의 진입 점은이 메소드이며,이 방법은 우리가 반환 (실행 프로세스를 중단)하거나 다음 레이어를 호출 할 수 있습니다.
<?php namespace MyMiddleware; class Cache extends SlimMiddleware { protected $db; public function __construct(PDO $db) { $this->db = $db; } public function call() { $key = $this->app->request()->getResourceUri(); $rsp = $this->app->response(); $data = $this->fetch($key); if ($data) { // 缓存命中...返回缓存的内容 $rsp["Content-Type"] = $data["content_type"]; $rsp->body($data["body"]); return; } // 缓存未命中...继续生成页面 $this->next->call(); if ($rsp->status() == 200) { // 缓存结果以供将来查找 $this->save($key, $rsp["Content-Type"], $rsp->body()); } } protected function fetch($key) { $query = "SELECT content_type, body FROM cache WHERE key = " . $this->db->quote($key); $result = $this->db->query($query); $row = $result->fetch(PDO::FETCH_ASSOC); $result->closeCursor(); return $row; } protected function save($key, $contentType, $body) { $query = sprintf("INSERT INTO cache (key, content_type, body) VALUES (%s, %s, %s)", $this->db->quote($key), $this->db->quote($contentType), $this->db->quote($body) ); $this->db->query($query); } }
헤더 및 본문을 설정 한 다음 반환하여 파이프 라인이 부족합니다. 캐시가 누락되면 <🎜 🎜>에 전화하여 다음 미들웨어 계층을 호출하십시오. 프로세스가 다른 미들웨어 호출 에서이 지점으로 돌아 오면 요청 상태가 빠르게 확인되고 관련 데이터가 향후 검색을 위해 캐시됩니다. 이 클래스는 Slim의 call()
클래스를 확장하기 때문에 <🎜 🎜>를 통해 슬림 응용 프로그램의 인스턴스에 액세스하여 간접적으로 응답 및 요청 객체에 액세스 할 수 있습니다. 응답을 배열로 취급하여 응답의 헤더에 영향을 줄 수 있으며 Content-Type
방법을 통해 응답 본문에 영향을 미칩니다. <🎜 🎜> 및 $this->next->call()
메소드는 보호 된 도우미 방법이며, 단순히 컨텐츠를 찾고 지속하기 위해 데이터베이스 쿼리를 래핑합니다. 나는 예제를 완성하기 위해 여기에 포함시켰다. <🎜 🎜 Middleware
, $this->app
및 <🎜 body()
가있는 <🎜 🎜>라는 테이블이 있다고 가정합니다. 필요에 따라 지속 메커니즘이 다를 수 있습니다. 또한 만료 된 (단순성) 만료 된 캐시는 여기에 표시되지 않지만 직접 병합 할 수 있습니다. fetch()
save()
<<> 미들웨어의 등록 및 구성 <🎜 🎜> cache
key
메소드를 사용하여 미들웨어를 등록하십시오. content_type
body
물론
메소드를 노출시키는 핸들러 객체를 수락 할 수 있습니다.이를 통해 샘플 메소드를 삭제하거나 최종 사용자 개발자는 IT 요구 사항을 따릅니다. 구성 요소 구성의 일부로 기능을 제공합니다. add()
<🎜 🎜> <<> 결론
<?php require_once "../vendor/autoload.php"; $app = new SlimSlim(); $app->add(new MyMiddlewareCache($db));
(Fotolia의 그림)
(다음은 원래 콘텐츠에 따라 조정 및 보충 된 FAQ이며 일부 중복 컨텐츠가 간소화되었습니다) 슬림 미들웨어에 대한 FAQS
슬림 미들웨어는 무엇이며 왜 중요한가요? Slim Middleware는 Slim Framework의 강력한 도구로 HTTP 요청 및 응답을 조작 할 수 있습니다. 들어오는 요청이나 나가는 응답을 수정하기 위해 슬림 한 응용 프로그램 전후에 코드를 실행하는 방법을 제공하기 때문에 중요합니다. 이것은 인증, 캐싱 또는 로깅과 같은 다양한 목적으로 사용할 수 있습니다.
슬림 한 미들웨어를 만드는 방법은 무엇입니까? Slim에서 미들웨어를 생성하려면
를 구현하는 클래스를 정의하는 것이 포함됩니다. 이 클래스에는라는 메소드가 있어야합니다. 메소드는 요청 및 응답을 조작 할 수있는 곳입니다.
MiddlewareInterface
슬림 한 특정 경로에 미들웨어를 사용할 수 있습니까? process()
객체 대신 ServerRequestInterface
객체에서 메소드를 호출하여 수행됩니다. 이를 통해 특정 경로에만 영향을 미치는 미들웨어를 가질 수 있습니다. RequestHandlerInterface
process()
슬림 한 오류 처리를 수행하기 위해 미들웨어를 사용하는 방법은 무엇입니까?
미들웨어를 사용하여 슬림을 로그인하는 방법은 무엇입니까?
슬림 한 타사 미들웨어를 사용할 수 있습니까?
위 내용은 PHP 마스터 | 슬림 미들웨어로 작업합니다의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!