Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk menggunakan FastRoute untuk penghalaan URL dalam php?

Bagaimana untuk menggunakan FastRoute untuk penghalaan URL dalam php?

WBOY
WBOYasal
2023-06-02 11:40:361687semak imbas

Dalam pembangunan web moden, penghalaan adalah bahagian yang tidak dapat dielakkan. Penghalaan berfungsi sebagai jambatan antara halaman web dan aplikasi, menghubungkan permintaan HTTP dan operasi khusus dalam aplikasi. Tujuan penghalaan adalah untuk memetakan permintaan URL masuk kepada pengendali yang sesuai supaya kami boleh memulakan halaman atau melaksanakan operasi lain berdasarkan permintaan URL. Dalam PHP, sistem penghalaan biasanya dilaksanakan dengan menggunakan perpustakaan pihak ketiga yang dipanggil "FastRoute".

FastRoute ialah perpustakaan penghalaan PHP berprestasi tinggi. Ia boleh mengendalikan sejumlah besar peraturan penghalaan dan menggunakan penghurai tersuai untuk menjana jadual penghalaan pantas. Artikel ini akan memperkenalkan cara menggunakan FastRoute untuk penghalaan URL.

  1. Pasang FastRoute

Pertama, sudah tentu, pasang FastRoute. Kita boleh menggunakan Composer untuk memasang FastRoute. Tambah baris berikut dalam fail composer.json:

{
    "require": {
        "nikic/fast-route": "^1.3"
    }
}

Kemudian jalankan arahan berikut untuk memasang:

$ composer install
  1. Buat Penghala

Kita perlu buat penghala untuk mengendalikan semua penghalaan URL. Penghala ialah komponen teras sistem penghalaan FastRoute dan bertanggungjawab untuk mengendalikan semua permintaan URL yang masuk dan memetakannya kepada pengendali yang betul.

Mula-mula, mari buat fail yang dipanggil "routes.php" dalam direktori akar projek untuk menyimpan semua kod penghalaan.

Di atas fail ini, tambahkan kod berikut untuk mentakrifkan ruang nama:

<?php

namespace MyApp;

use FastRouteRouteCollector;

$dispatcher = FastRoutesimpleDispatcher(function(RouteCollector $r) {
    // 添加路由规则到这里来
});

Dalam kod ini, kami mencipta contoh penjadual FastRoute. Dalam contoh ini, kami menggunakan fungsi simpleDispatcher untuk mengkonfigurasi FastRoute untuk menggunakan penyelesai laluan lalai dan mengikatnya kepada pembolehubah yang dipanggil "$dispatcher".

Pembina menerima fungsi tanpa nama yang mesti mengkonfigurasi semua peraturan penghalaan menggunakan contoh RouteCollector. RouteCollector ialah komponen utama peti kebal penghalaan FastRoute. Kami akan menggunakan ini untuk menambah semua peraturan penghalaan.

  1. Tentukan peraturan penghalaan

Apabila menambahkan peraturan penghalaan, anda biasanya memerlukan dua parameter: kaedah HTTP dan laluan penghalaan. Kaedah HTTP boleh GET, POST, PUT atau DELETE, dsb. Laluan penghalaan merujuk kepada laluan URL masuk. Kami boleh menggunakan ruang letak untuk menangkap serpihan dinamik URL.

Berikut ialah contoh menambah peraturan penghalaan:

$r->addRoute('GET', '/user/{id:d+}', 'UserController@get');

Dalam contoh ini, kami menentukan kaedah HTTP sebagai GET dan laluan penghalaan yang diminta ialah /user/{id:d+}. Ambil perhatian bahawa kami menggunakan pemegang tempat {id} yang disertakan dalam { } untuk menentukan laluan. Pemegang tempat ini menangkap bahagian dinamik laluan permintaan.

Akhir sekali, kami menghantar nama pengawal dan nama kaedah yang akan dilaksanakan sebagai parameter terakhir kepada laluan. Dalam contoh ini, kami menggunakan "UserController@get" untuk mewakili pengawal dan mendapatkan kaedah halaman pengguna.

  1. Mengendalikan permintaan

Kami telah menyelesaikan penyediaan penghala dan peraturan penghalaan, kini kami perlu menulis kod untuk mengendalikan permintaan URL. Kami perlu menyemak setiap permintaan dan menetapkannya kepada penghala yang betul. FastRoute menyediakan komponen yang dipanggil "Penghantar" untuk menyelesaikan tugas ini. Setiap permintaan dikendalikan oleh komponen Dispatcher.

Pertama, kita perlu memulakan Dispatcher dengan memperkenalkan fail peraturan penghalaan ke dalam projek. Anda boleh menambah kod berikut dalam fail index.php:

<?php

require_once __DIR__ . '/vendor/autoload.php';

$dispatcher = require_once __DIR__ . '/routes.php';

Ini akan menetapkan pembolehubah $route yang kami tetapkan dalam fail "routes.php" kepada pembolehubah $dispatcher. Kini, kita boleh menggunakan Dispatcher untuk mengendalikan permintaan. Tambahkan kod berikut dalam fail index.php:

$routeInfo = $dispatcher->dispatch($_SERVER['REQUEST_METHOD'], $_SERVER['REQUEST_URI']);

switch ($routeInfo[0]) {
    case FastRouteDispatcher::NOT_FOUND:
        // 处理404错误
        break;
    case FastRouteDispatcher::METHOD_NOT_ALLOWED:
        // 处理不允许的HTTP方法
        break;
    case FastRouteDispatcher::FOUND:
        // 处理请求
        break;
}

Dalam kod ini, kami menggunakan kaedah penghantaran $dispatcher untuk menghantar permintaan kepada penghala. Fungsi ini mengembalikan tatasusunan yang mengandungi tiga elemen: kaedah HTTP yang dipadankan oleh penghala, laluan penghalaan dan pengendali penghala. Bergantung pada hasil padanan penghala, kami boleh menggunakan pernyataan suis untuk mengendalikan pelbagai jenis permintaan.

Kini, kami telah menyelesaikan langkah-langkah penghalaan menggunakan FastRoute. Kami telah mencipta penghala dan menambah peraturan penghalaan, menentukan cara mengendalikan permintaan dan mengetahui cara mengendalikan hasil padanan laluan.

Ringkasan

Dalam artikel ini, kami memperkenalkan cara menggunakan FastRoute untuk penghalaan URL. Proses ini terdiri daripada tiga langkah:

  1. Pasang FastRoute
  2. Buat penghala dan tentukan peraturan penghalaan
  3. Proses permintaan dan tetapkan kepada penghala yang betul

FastRoute ialah perpustakaan penghalaan PHP berprestasi tinggi yang ringkas dan mudah digunakan. Disebabkan kelebihan kelajuan dan kemudahan pembangunannya, FastRoute telah menjadi kaedah pilihan dalam pembangunan PHP. Dalam persekitaran pengeluaran sebenar, kami juga boleh menambah caching untuk meningkatkan prestasi penghalaan.

Atas ialah kandungan terperinci Bagaimana untuk menggunakan FastRoute untuk penghalaan URL dalam php?. 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