>  기사  >  백엔드 개발  >  더 나은 라우터 만들기: HIDDEN 입력 및 DELETE 요청 처리

더 나은 라우터 만들기: HIDDEN 입력 및 DELETE 요청 처리

PHPz
PHPz원래의
2024-07-17 00:44:00496검색

Creating a Better Router : Handling HIDDEN Inputs and DELETE request

며칠 전에 URL을 컨트롤러에 매핑하는 기본 라우터를 만드는 방법을 배웠습니다. 이제 고급 기능을 갖춘 더 나은 라우터를 구축하기 위해 이를 개선해야 합니다. 숨겨진 입력으로 작동하는 더 나은 라우터를 구축하려면 먼저 프로젝트에서 기본 router.php 파일을 삭제하고 새 파일을 생성하세요. 시작해 보세요.

라우팅 소개

우리는 애플리케이션이 요청을 처리하고 이를 적절한 핸들러로 라우팅할 수 있도록 URL을 특정 컨트롤러나 작업에 효율적으로 매핑하는 더 나은 라우터를 구축해야 합니다.
숨겨진 입력과 함께 작동하는 향상된 라우터 기능을 통해 노트 ID를 URL에 노출하지 않고 컨트롤러에 전달하여 사용자 간섭을 방지함으로써 안전하게 노트를 삭제할 수 있습니다.

<input type="hidden" name="_method" value="DELETE">

라우터 파일 생성

라우터 파일을 생성하려면 네임스페이스(이 경우 Core)로 Router 클래스를 초기화해야 합니다.

<?php 

namespace Core;

 class Router { }

공용 함수(공통 매개변수)

라우터 클래스가 구축되면 그 안에 공개 기능을 정의해야 하며, 모두는 누군가가 특정 사이트를 방문할 때 수행할 작업을 웹사이트에서 결정하는 데 도움이 되는 필수 경로로 가져오기, 게시, 삭제, 패치 및 넣기와 같은 동일한 매개변수를 갖습니다. 페이지. 이들 함수는 동일한 매개변수를 갖고 있어 동일한 작업을 수행할 수 있습니다.

public function get($uri, $controller) {
 $this->add('GET', $uri, $controller); }
public function post($uri, $controller) {
 $this->add('POST', $uri, $controller); }
public function delete($uri, $controller) { 
$this->add('DELETE', $uri, $controller); }
public function patch($uri, $controller) { 
$this->add('PATCH', $uri, $controller); }
public function put($uri, $controller) { $this->add('PUT', $uri, $controller); }

메소드 추가

모든 공개 함수에는 동일한 매개변수가 있으므로 add 메소드를 사용하고 동일한 매개변수를 제공하며 다른 함수에서만 이를 호출합니다. 요청 방법, 일치시킬 URI 패턴, 요청을 처리할 컨트롤러 파일이라는 세 가지 매개변수를 사용하여 라우팅 맵에 새 경로를 추가하는 데 사용됩니다.

public function add($method, $uri, $controller) { 
  $this->routes[] = [ 
    'uri' => $uri, 
    'controller' => $controller, 
    'method' => $method 
  ]; 
}

경로 방법

여기서는 주어진 URL에 대한 애플리케이션의 응답을 결정하기 위한 경로 메소드를 정의하고 이를 해당 컨트롤러에 매핑하여 요청을 처리합니다.

public function route($uri, $method) { 
  foreach ($this->routes as $route) { 
    if ($route['uri'] === $uri && $route['method'] === strtoupper($method)) { 
      return require base_path($route['controller']); 
    } 
  } 
  $this->abort(); 
}

strtoupper 함수

라우팅 방법에서는 strtoupper 함수를 사용하여 문자열을 대문자로 변환하여 대소문자를 구분하지 않습니다.

strtoupper($method)

보호된 기능(중단)

router.php 파일에서 중단 방법을 안전망으로 정의하여 웹사이트가 올바른 경로를 찾을 수 없는 경우 오류 페이지를 표시했습니다.

protected function abort($code = 404) { 
  http_response_code($code); 
  require base_path("views/{$code}.php"); 
  die(); 
}

경로 정의

마지막으로 Routes.php 파일에 라우팅 구성을 정의하고 URL을 해당 컨트롤러 작업에 매핑하는 것입니다.

$router->get('/', 'controllers/index.php'); 
$router->get('/about', 'controllers/about.php'); 
$router->get('/contact', 'controllers/contact.php'); 
$router->get('/notes', 'controllers/notes/index.php'); 
$router->get('/note', 'controllers/notes/show.php'); 
$router->get('/notes/create', 'controllers/notes/create.php');

get 메소드는 요청 메소드(GET), URL 패턴을 지정하고 이를 컨트롤러 파일에 매핑합니다.

결론

결론적으로 우리는 URL을 특정 컨트롤러 방법에 효율적으로 매핑하는 더 나은 라우터를 구축하여 요청 처리에 대한 보다 체계적이고 유지 관리 가능한 접근 방식을 가능하게 하고 웹사이트의 전반적인 성능과 확장성을 향상시켰습니다.

명확하게 이해하셨기를 바랍니다.

위 내용은 더 나은 라우터 만들기: HIDDEN 입력 및 DELETE 요청 처리의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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