ホームページ > バックエンド開発 > PHPチュートリアル > より良いルーターの作成 : HIDDEN 入力と DELETE リクエストの処理

より良いルーターの作成 : HIDDEN 入力と DELETE リクエストの処理

PHPz
リリース: 2024-07-17 00:44:00
オリジナル
520 人が閲覧しました

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 { }
ログイン後にコピー

パブリック関数(共通パラメータ)

ルーター クラスが構築されると、その中でパブリック関数を定義する必要があります。また、ルーター クラスには、誰かが特定のサイトにアクセスしたときに Web サイトが何を行うかを決定するのに役立つ重要なルートとして、get、post、delete、patch、put などの同じパラメーターが含まれています。ページ。これらの関数には同じパラメータがあり、同じアクションを実行できます。

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 パターン、リクエストを処理するコントローラー ファイルの 3 つのパラメーターを受け取ります。

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 ファイルで、Web サイトが正しいルートを見つけられない場合にエラー ページを表示するセーフティ ネットとして中止メソッドを定義しました。

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 を特定のコントローラー メソッドに効率的にマッピングする、より優れたルーターを構築しました。これにより、リクエストを処理するためのより構造化された保守可能なアプローチが可能になり、Web サイトの全体的なパフォーマンスとスケーラビリティが向上します。

しっかりと理解していただけたと思います。

以上がより良いルーターの作成 : HIDDEN 入力と DELETE リクエストの処理の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート