Rumah >pembangunan bahagian belakang >tutorial php >Mencipta Penghala yang Lebih Baik : Mengendalikan Input TERSEMBUNYI dan permintaan DELETE

Mencipta Penghala yang Lebih Baik : Mengendalikan Input TERSEMBUNYI dan permintaan DELETE

PHPz
PHPzasal
2024-07-17 00:44:00510semak imbas

Creating a Better Router : Handling HIDDEN Inputs and DELETE request

Beberapa hari lalu, saya belajar membina penghala asas yang memetakan URL kepada pengawal. Sekarang, saya perlu mempertingkatkannya untuk membina penghala yang lebih baik dengan fungsi lanjutan. Untuk membina penghala yang lebih baik yang berfungsi dengan input tersembunyi, pertama sekali padam fail router.php asas daripada projek dan buat yang baharu. Mari mulakan.

Pengenalan kepada Penghalaan

Kami perlu membina penghala yang lebih baik yang memetakan URL dengan cekap kepada pengawal atau tindakan tertentu, membolehkan aplikasi kami mengendalikan permintaan dan menghalakannya kepada pengendali yang sesuai.
Keupayaan penghala yang lebih baik untuk berfungsi dengan input tersembunyi membolehkan pemadaman nota selamat dengan menghantar ID nota kepada pengawal tanpa mendedahkannya dalam URL, menghalang gangguan pengguna.

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

Buat Fail Penghala

Untuk mencipta fail penghala, kita perlu memulakan kelas Router dengan ruang nama, dalam kes ini, Teras.

<?php 

namespace Core;

 class Router { }

Fungsi Awam (Parameter Biasa)

Memandangkan kelas penghala dibina maka kita perlu mentakrifkan fungsi awam di dalamnya dan semuanya mempunyai parameter yang sama seperti dapatkan, siarkan, padam, tampal dan letak sebagai laluan penting yang membantu tapak web kami menentukan perkara yang perlu dilakukan apabila seseorang melawat sesuatu muka surat. Fungsi ini mempunyai parameter yang sama, membolehkan mereka melakukan tindakan yang sama.

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); }

Tambah Kaedah

Memandangkan semua fungsi awam mempunyai parameter yang sama maka kami menggunakan kaedah tambah dan memberikan parameter yang sama kepadanya dan hanya memanggil ini dalam fungsi lain. Ia digunakan untuk menambah laluan baharu pada peta penghalaan, mengambil tiga parameter: kaedah permintaan, corak URI untuk dipadankan dan fail pengawal untuk mengendalikan permintaan.

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

Kaedah Laluan

Di sini, Kami mentakrifkan kaedah laluan untuk menentukan respons aplikasi kami kepada URL yang diberikan, memetakannya kepada pengawal yang sepadan untuk mengendalikan permintaan.

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(); 
}

Fungsi strtoupper

Kaedah laluan, Kami menggunakan fungsi strtoupper untuk menukar rentetan kepada huruf besar, memastikan padanan tidak sensitif huruf besar.

strtoupper($method)

Fungsi Dilindungi (Batalkan)

Dalam fail router.php kami mentakrifkan kaedah batalkan sebagai jaring keselamatan, memaparkan halaman ralat jika tapak web kami tidak dapat mencari laluan yang betul.

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

Definisi Laluan

Perkara terakhir ialah menentukan konfigurasi penghalaan dalam fail route.php, memetakan URL kepada tindakan pengawal yang sepadan.

$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');

Kaedah get menentukan kaedah permintaan(GET) , corak URL dan memetakannya ke fail pengawal.

Kesimpulan

Kesimpulannya, kami telah membina penghala yang lebih baik yang memetakan URL dengan cekap kepada kaedah pengawal tertentu, membolehkan pendekatan yang lebih berstruktur dan boleh diselenggara untuk mengendalikan permintaan serta meningkatkan prestasi keseluruhan dan kebolehskalaan tapak web kami.

Saya harap anda telah memahaminya dengan jelas.

Atas ialah kandungan terperinci Mencipta Penghala yang Lebih Baik : Mengendalikan Input TERSEMBUNYI dan permintaan DELETE. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya:Pas BantalArtikel seterusnya:Pas Bantal