> PHP 프레임워크 > ThinkPHP > ThinkPHP5.2: 라우팅 조정 및 개선

ThinkPHP5.2: 라우팅 조정 및 개선

爱喝马黛茶的安东尼
풀어 주다: 2019-12-16 15:10:24
앞으로
2500명이 탐색했습니다.

ThinkPHP5.2: 라우팅 조정 및 개선

ThinkPHP5.2의 라우팅 부분은 다른 구성 요소와 마찬가지로 주로 다음 측면을 포함하여 간소화되고 최적화되었습니다.

라우트 정의의 반환 배열 형식 취소

라우팅에 도움이 되지 않기 때문입니다. 캐시 생성, 라우팅 정의 파일에서는 경로를 정의하기 위해 배열을 반환하는 방식을 취소하고, 라우팅 방식으로 경로를 등록해야 합니다.

예:

return [
    'hello/:name' => 'index/hello',
];
로그인 후 복사

를 다음으로 변경해야 합니다.

Route::get('hello/:name', 'index/hello');
로그인 후 복사

여러 애플리케이션에 대한 경로 정의 파일의 위치

단일 애플리케이션 모드에서 경로 정의 파일은 이전과 마찬가지로 경로 디렉터리 아래에 있습니다. 프로젝트 사용 여러 애플리케이션의 경우 경로 정의와 각 애플리케이션의 일치는 독립적이며 모듈 개념이 없습니다. 경로 정의 파일의 위치는 경로/응용 프로그램 하위 디렉터리에 있어야 합니다. 예:

route/index/route.php //  index应用的路由定义文件
route/index/web.php // index应用的第二个路由定义文件
route/admin/route.php //  admin应用的路由定义文件
로그인 후 복사

기본 URL 규칙은

http://域名/入口文件(或者应用名)/控制器名/操作名
로그인 후 복사

가 됩니다. 애플리케이션의 라우팅 규칙은 실제로 애플리케이션이 아니라 정의된 항목 파일(또는 애플리케이션 이름) 뒤의 URL 부분입니다.

자동 다중 애플리케이션

최신 버전 5.2는 동일한 항목 파일에서 여러 다른 애플리케이션에 대한 액세스를 지원할 수 있습니다(이전에는 각 애플리케이션에 해당 항목 파일을 추가해야 했습니다).

예를 들어, index.php 항목 파일에

(new App())->autoMulti()->run()->send();
로그인 후 복사

를 사용하면 항목 파일을 생성하지 않고도 URL을 통해 여러 애플리케이션에 자동으로 액세스할 수 있습니다.

http://serverName/index.php/admin
로그인 후 복사

기본 애플리케이션이 index가 아닌 경우(기본값은 항목 파일입니다) 이름), 이름을 전달할 수 있습니다. 메소드는 기본 애플리케이션을 지정합니다.

(new App())->autoMulti()
    ->name('admin')
    ->run()
    ->send();
로그인 후 복사

는 애플리케이션 이름의 별칭 매핑을 지원합니다. 예:

(new App())->autoMulti([
    'think'    =>    'admin',  // 把admin应用映射为think
])->run()->send();
로그인 후 복사

애플리케이션을 사용자 정의해야 하는 경우

(new App())->autoMulti([
    'admin'    =>   function($app) {
        $app->debug(true)->useClassSuffix();
    }
])->run()->send();
로그인 후 복사

를 사용하여 별칭 라우팅을 취소할 수 있습니다.

제한된 사용 시나리오 및 성능 오버헤드 문제로 인해 취소하세요. 원래 별칭 라우팅 기능은 대신 리소스 라우팅이나 별도 라우팅을 사용하는 것이 좋습니다.

바로가기 라우팅 취소

제한된 사용 시나리오 및 사양 미준수로 인해 기존 컨트롤러 바로가기 라우팅 기능이 취소되었습니다.

빈 컨트롤러 및 빈 작동 취소

원래의 빈 컨트롤러 및 빈 작동 기능이 취소되었습니다. 대신 MISS 라우팅 기능을 사용하세요. 다른 라우팅 그룹에 대한 MISS 라우팅 설정을 지원할 수 있습니다. 동시에,empty_controller 구성은 폐기됩니다.

컨트롤러 자동 검색 취소

성능상의 이유로 라우팅의 다단계 컨트롤러 자동 검색 기능이 취소되었습니다. 라우팅 규칙 정의에 라우팅할 다단계 컨트롤러를 명확히 지정해 주세요.

라우팅 기능은 독립적으로 설계되었습니다.

라우팅 기능은 더 이상 고정적으로 실행되지 않으며 AppInit 이벤트에 대한 응답 리스너로 설계되었으며 프로젝트의 이벤트 정의에서 구성할 수 있습니다.

return [
    'bind'      => [
    ],
    'listen'    => [
        'AppInit'      => [
            'think\listener\LoadLangPack',
            'think\listener\RouteCheck',
        ],
        'AppBegin'     => [
            'think\listener\CheckRequestCache',
        ],
        'ActionBegin'  => [],
        'AppEnd'       => [],
        'LogLevel'     => [],
        'LogWrite'     => [],
        'ResponseSend' => [],
        'ResponseEnd'  => [],
    ],
    'subscribe' => [
    ],
];
로그인 후 복사

AppInit 이벤트에서 thinklistenerRouteCheck 클래스가 실행됩니다. 애플리케이션이 라우팅 기능을 전혀 사용할 필요가 없다면 구성 파일에서 정의를 해제할 수 있으며 시스템은 기본 URL을 실행합니다. 스케줄링(즉, 컨트롤러/작업).

등록 방법의 옵션 및 패턴 매개변수 취소

경로 등록 방법의 옵션 및 패턴 매개변수 취소(rule/get/post/put/delete/patch/miss/group 및 기타 방법 포함) 및 모두 메서드 호출 형식으로 변경하세요. 예를 들어 원본:

Route::get('hello/:name', 'index/hello', [ 'ext'  =>  'html'], [ 'name'  => '\w+']);
로그인 후 복사

Route::get('hello/:name', 'index/hello')
    ->ext('html')
    ->pattern([ 'name'  => '\w+']);
로그인 후 복사

로 변경해야 합니다. 경로 그룹 정의는 더 이상 배열을 지원하지 않습니다.

그룹의 중첩 기능에 도움이 되지 않기 때문에 경로 그룹 정의는 더 이상 배열을 지원하지 않으며 클로저를 통해서만 정의할 수 있습니다. 예:

Route::group('blog', [
    ':id' => 'Blog/read',
    ':name' => 'Blog/read',
])->ext('html')->pattern(['id' => '\d+']);
로그인 후 복사

Route::group('blog', function() {
    Route::get(':id', 'Blog/read');
    Route::get(':name', 'Blog/read');
})->ext('html')->pattern(['id' => '\d+']);
로그인 후 복사

로 변경해야 합니다. 가상 라우팅 그룹을 등록해야 하는 경우 첫 번째 매개변수

Route::group(function() {
    Route::get('blog/:id', 'Blog/read');
    Route::get('user/:name', 'User/read');
})->ext('html')->pattern(['id' => '\d+']);
로그인 후 복사

에서 클로저를 직접 사용할 수 있습니다. url_controller_layer 구성을 취소하세요.

메소드 설정 대신 항목 파일에서 ControllerLayer를 사용하세요.

(new App())->controllerLayer('Action')
    ->run()
    ->send();
로그인 후 복사

class_suffix 구성 취소

대신 항목 파일의 useClassSuffix 메소드를 사용하여 설정하세요.

(new App())->useClassSuffix(true)
    ->run()
    ->send();
로그인 후 복사

controller_suffix 및 class_suffix 구성 매개변수를 동시에 취소하세요.

mergeExtraVars 메서드 및 해당 매개변수 취소

대신 라우팅 규칙에 변수 규칙을 명시적으로 지정하세요.

헤더 메소드 매개변수 유형 조정

강력한 유형 제약으로 인해 헤더 메소드가 배열 매개변수 전달만 지원하도록 변경되었습니다.

강력한 형식의 매개변수 사용

강력한 형식의 매개변수가 완전히 활성화되고 엄격 모드가 사용되므로 매개변수의 유형에 주의하세요.

많은 ThinkPHP 입문 튜토리얼, 모두 PHP 중국어 웹사이트에 있습니다. 온라인 학습을 환영합니다!

이 기사는 https://blog.thinkphp.cn/916515

에서 복제되었습니다.

위 내용은 ThinkPHP5.2: 라우팅 조정 및 개선의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:thinkphp.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿