>  기사  >  PHP 프레임워크  >  ThinkPHP6에서 미들웨어를 사용하여 요청 처리

ThinkPHP6에서 미들웨어를 사용하여 요청 처리

王林
王林원래의
2023-06-20 18:39:421532검색

【소개】

ThinkPHP6은 잘 알려진 PHP 오픈 소스 프레임워크로, 이전 버전의 뛰어난 기능을 우아하게 계승하고 PHP7의 새로운 기능을 통합하여 더욱 빠르고 안전해졌습니다. ThinkPHP6에서 미들웨어는 개발자가 보다 유연하고 확장 가능한 애플리케이션을 구현하기 위해 요청 전, 도중, 후에 처리할 수 있도록 하는 매우 중요한 부분입니다.

【텍스트】

1. 미들웨어란?

미들웨어는 요청이 애플리케이션에 도달하기 전후에 실행될 수 있는 코드를 말합니다. 미들웨어가 존재하면 애플리케이션을 쉽게 확장하고 관리할 수 있습니다.

ThinkPHP6에서 미들웨어는 다음 기능을 구현할 수 있습니다.

  1. 경로 사전 처리: 토큰 확인, 불법 요청 차단 등
  2. 컨트롤러 메서드 사전 처리: PV, UV 요청 매개변수 계산;
  3. 응답 데이터 캐싱, 로깅 등 컨트롤러 메소드 후처리
  4. 라우팅 후처리 등: 응답 문제 등

2. 미들웨어 사용

미들웨어 사용 ThinkPHP6의 구성은 매우 간단합니다. 구성 파일에서 미들웨어 구성만 수행하면 지정된 순서대로 실행될 수 있습니다.

2.1 미들웨어 등록

config/middleware.php 파일에서 다음과 같은 기본 미들웨어 목록을 볼 수 있습니다.

<?php

return [
    // 别名或分组
    'alias'    => [],
    // 优先级设置,此数组中的中间件会按照优先级进行先后排序
    'priority' => [],
    // 中间件列表
    'middleware' => [
            hinkmiddlewareSessionInit::class,
            hinkmiddlewareAllowCrossDomain::class,
    ],
];

그 중 첫 번째 미들웨어는 세션 초기화를 목적으로 하는 SessionInit 미들웨어이고, 두 번째 미들웨어는 미들웨어는 도메인 간 요청을 허용하도록 설계된 AllowCrossDomain 미들웨어입니다. 자체 미들웨어를 구성해야 하는 경우 자체 미들웨어 클래스를 정의하고 이를 위 구성에 추가할 수 있습니다.

2.2 미들웨어 정렬

ThinkPHP6의 미들웨어는 우선순위 값이 작을수록 실행 순서가 높아집니다. 미들웨어의 구성 파일에서 아래와 같이 지정된 그룹 또는 별칭에 대한 미들웨어의 우선 순위를 설정할 수 있습니다.

<?php

return [
    // 别名或分组
    'alias'    => [
        'home' => ppmiddlewareCheck::class,
    ],
    // 优先级设置,此数组中的中间件会按照优先级进行先后排序
    'priority' => [
        ppmiddlewareDemo::class => 1,
        ppmiddlewareTest::class => 2,
    ],
    // 中间件列表
    'middleware' => [
            hinkmiddlewareSessionInit::class,
            hinkmiddlewareAllowCrossDomain::class,
    ],
];

위 구성에서 데모 미들웨어를 우선 순위 1로, 테스트 미들웨어를 2 숫자 우선 순위로 설정합니다. .

2.3 미들웨어 사용

ThinkPHP6에서는 미들웨어를 글로벌 라우팅이나 그룹 라우팅, 특정 컨트롤러나 컨트롤러 메소드에 사용할 수 있습니다.

(1) 글로벌 라우팅은 미들웨어를 사용합니다.

어플리케이션 디렉터리의 Route/route.php 파일에서 다음과 같이 글로벌 라우팅을 등록할 수 있습니다.

<?php

use thinkacadeRoute;

Route::get('hello/:name','index/hello')->middleware('Check');

위 코드에서 미들웨어('체크')를 통해 추가합니다. Check라는 미들웨어가 생성됩니다. 이는 index/hello 메서드가 실행되기 전에 Check 미들웨어가 실행된다는 의미입니다.

(2) 그룹 라우팅은 미들웨어를 사용합니다

애플리케이션 디렉토리의 Route/group.php 파일에서 아래와 같이 그룹 라우팅을 등록할 수 있습니다.

<?php

use thinkacadeRoute;

//定义分组路由
Route::group('/api', function () {
    Route::get('/user/:id', 'api/user/read')->middleware('Check');
});

위 코드에서는 api라는 그룹이 Routing, 여기서 /user/:id 경로는 Check라는 미들웨어를 사용합니다.

(3) 컨트롤러 수준에서 미들웨어 사용

컨트롤러 파일에서는 아래와 같이 특별히 명명된 메서드를 통해 메서드 수준 미들웨어를 정의할 수 있습니다.

<?php
namespace appcontroller;

class Test
{
    // 方法级别
    public function read() 
    {
        return "Hello Word!";
    }

    // 方法级别
    public function write()
    {
        return "Hello China!";
    }

    // 控制器级别
    protected $middleware = [ppmiddlewareCheck::class];

    // 方法级别
    protected $middleware = [
        'read' => [ppmiddlewareReadCheck::class],
        'write' => [ppmiddlewareWriteCheck::class],
    ];
}

위 코드에서 읽기 및 쓰기 메서드는 다음 메서드를 사용합니다. -level 미들웨어는 메서드 수준 미들웨어이고 Check 미들웨어는 컨트롤러 수준 미들웨어입니다.

【요약】

미들웨어는 매우 유연한 요청 처리 방법을 제공하는 강력한 도구로, 요청 전, 도중, 후에 데이터를 처리할 수 있습니다. ThinkPHP6에서는 미들웨어 사용이 매우 간단합니다. 특정 규칙에 따라 미들웨어 클래스를 작성하고 구성하기만 하면 됩니다. 유연성과 확장성이 뛰어납니다.

위 내용은 ThinkPHP6에서 미들웨어를 사용하여 요청 처리의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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