ホームページ >バックエンド開発 >PHPチュートリアル >より良いルーターの作成 : HIDDEN 入力と DELETE リクエストの処理
数日前、私は 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($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 サイトの他の関連記事を参照してください。