>  기사  >  PHP 프레임워크  >  ThinkPHP6의 빈 컨트롤러에 대해 이야기해 봅시다.

ThinkPHP6의 빈 컨트롤러에 대해 이야기해 봅시다.

王雪芹
王雪芹원래의
2020-06-11 18:35:203368검색

ThinkPHP6 매뉴얼에서 빈 컨트롤러는 아주 작은 공간만을 차지합니다. 그래서 빈 컨트롤러란 무엇이며, 이 단어조차 많은 프로그래머들이 듣거나 사용하지 않을 수 있으므로 이번에는 빈 컨트롤러에 대해 이야기해 보겠습니다. 실제적인 예를 들어 ThinkPHP6를 소개합니다.

ThinkPHP6 공식 매뉴얼에서 "빈 컨트롤러" 키워드를 검색하면 빈 컨트롤러의 장 내용을 찾을 수 있습니다. 먼저 빈 컨트롤러의 공식 정의를 살펴보겠습니다.

빈 컨트롤러의 개념은 시스템이 지정된 컨트롤러 이름을 찾을 수 없을 때 시스템이 현재 컨트롤러 아래에서 빈 컨트롤러(오류) 클래스를 찾으려고 시도한다는 것을 의미합니다. application 에서 이 메커니즘을 사용하면 오류 페이지를 사용자 정의하고 URL을 최적화하는 데 사용할 수 있습니다.

즉, 빈 컨트롤러를 사용하여 오류 페이지를 맞춤설정할 수 있습니다.

매뉴얼에서는 단일 애플리케이션을 예로 사용하지만 실제로 대부분의 프로젝트에는 여러 애플리케이션이 있으므로 다음에는 여러 애플리케이션을 예로 사용합니다.

우리의 프로젝트 도메인 이름이 www.xiangmu.com이라고 가정합니다. 두 개의 애플리케이션(index와 데모)이 있습니다. 각 애플리케이션에는 자체 인덱스 컨트롤러와 인덱스 방법이 있습니다.

1. 길을 찾을 수 없습니다.

브라우저에 www.xiangmu.com/index/index/a만 입력하면 이 주소는 인덱스 애플리케이션 아래 인덱스 컨트롤러의 a 메소드에 액세스하지만 거부할 수 있는 경우에는 a 메소드가 존재하지 않습니다. 이 잘못된 요청은 어떻게 되나요? 그러면 이 섹션의 빈 컨트롤러가 나타납니다.

인덱스 컨트롤에 다음 메소드를 추가합니다.

public function __call($method, $args){
    return 'error request!';
}

인덱스 컨트롤에서 찾을 수 없는 메소드에 액세스하는 한 __call로 이동합니다. 이제 존재하지 않는 페이지에 대해 __call()에 도달했으므로 404.html을 만들고 call()을 사용하여 템플릿을 렌더링할 수 있습니다.

2. 컨트롤러를 찾을 수 없습니다.

위 방법으로 컨트롤러를 찾을 수 없다면 어떻게 해야 하나요? 브라우저 www.xiangmu.com/index/a/a에 무작위로 컨트롤러를 입력했습니다. 실제로 컨트롤러나 메서드가 없습니다. 이 잘못된 요청을 거부할 수 있다면 어떨까요?

그런 다음 아래 Error.php 컨트롤러를 사용하여 문제를 해결하세요. 현재 액세스가 인덱스 애플리케이션이므로 Error.php를 인덱스 애플리케이션 아래에 넣습니다. 같은 방식으로 404와 같은 오류 페이지를 설정할 수도 있습니다.

<?php
namespace app\index\controller;

use app\BaseController;

class Error extends BaseController
{
    public function __call($method, $args){
            return &#39;error request!&#39;;
    }
}

위 내용은 빈 컨트롤러에 대한 관련 설명입니다. 지금 바로 사용해보세요!

위 내용은 ThinkPHP6의 빈 컨트롤러에 대해 이야기해 봅시다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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