Rumah  >  Artikel  >  rangka kerja php  >  Cara menggunakan penghalaan ThinkPhp

Cara menggunakan penghalaan ThinkPhp

PHPz
PHPzasal
2023-04-11 10:33:291273semak imbas

ThinkPhp ialah rangka kerja PHP yang biasa digunakan, dan penghalaan adalah bahagian penting dalam membina aplikasi web. Artikel ini akan memperkenalkan konsep asas penghalaan ThinkPhp, cara menggunakannya dan beberapa petua praktikal untuk membantu pembaca memahami dan menggunakan penghalaan ThinkPhp dengan lebih baik.

1. Konsep asas penghalaan ThinkPhp

Penghalaan ialah proses memetakan permintaan HTTP kepada pengendali. Dalam seni bina MVC tradisional, penghalaan memainkan peranan penting. Kami boleh memahami penghalaan sebagai pemetaan antara alamat dan aplikasi Alamat yang diminta oleh pelanggan akan dihalakan ke kaedah pengawal yang sepadan, dan kemudian kandungan yang sepadan akan dikeluarkan.

Penghalaan ThinkPhp terutamanya terdiri daripada tiga bahagian: pengawal (Pengawal), kaedah operasi (Tindakan) dan parameter (Param).

1 Pengawal: Pengawal ialah lapisan pertama yang menentukan penghalaan permintaan dan mewakili kelas pengawal. Fungsi pengawal adalah untuk menerima permintaan Web, memproses permintaan dan mengembalikan parameter ketiga, Tindakan (kaedah operasi).

2. Kaedah tindakan (Tindakan): Setiap pengawal mengandungi kaedah tindakan Selepas pengawal menerima permintaan, ia menyerahkan permintaan kepada kaedah tindakan untuk diproses dan mengembalikan hasilnya.

3. Parameter (Parameter): Parameter ialah bendera yang digunakan untuk membezakan gelagat kaedah operasi yang berbeza dalam pengawal yang sama. Sebagai contoh, kita boleh menggunakan parameter untuk membezakan antara dua operasi yang berbeza: menyoal pengguna dengan nombor ID tertentu dan menyoal semua maklumat pengguna.

Dalam ThinkPhp, laluan ditentukan melalui akses URL. URL mengandungi maklumat tiga bahagian di atas.

Contohnya:

http://www.example.com/index.php/index.php/controller/action/param1/value1/param2/value2

di mana, index.php mewakili satu fail kemasukan, controller mewakili pengawal, action mewakili kaedah operasi, param Menunjukkan parameter, dan value menunjukkan nilai parameter yang sepadan.

2. Cara menggunakan penghalaan ThinkPhp

Berikut memperkenalkan cara menggunakan penghalaan ThinkPhp:

1 Penghalaan asas

Semua laluan dalam aplikasi akan dipetakan secara lalai kepada pengawal dan kaedah tertentu. Sebagai contoh, jika URL permintaan ialah /index.php/index/index, ia akan dipetakan kepada kaedah indeks kelas Indeks.

2. Penghalaan statik

Penghalaan statik merujuk kepada jenis laluan yang tidak mengandungi parameter dalam URL. Jenis laluan ini boleh menggunakan beberapa jenis ungkapan biasa untuk memadankan URL. Laluan statik memetakan URL kepada pengawal dan kaedah tertentu dan tidak berubah semasa pelaksanaan.

Contohnya:

use think\facade\Route;

Route::get('blog/:id','index/blog/read');

Kod di atas mentakrifkan laluan statik, yang akan menghala ke kaedah baca pengawal blog Indeks Malah, ia akan sepadan dengan URL yang diminta sebagai /index.php/blog/4 , dengan 4 ialah nilai id parameter.

3. Penghalaan dinamik

Penghalaan dinamik merujuk kepada laluan yang mengandungi parameter. Contohnya, jika kami ingin mendapatkan halaman profil pengguna semasa, kami boleh menggunakan laluan berikut:

use think\facade\Route;

Route::rule('user/:id', 'index/user/index');

Laluan ini mentakrifkan parameter yang mengandungi id pengguna dalam URL, contohnya: /index.php/user/123, di mana 123 akan menjadi Nilai id parameter dihantar kepada kaedah indeks pengawal pengguna.

4. Penghalaan biasa

Penghalaan biasa ialah laluan yang sepadan dengan URL permintaan mengikut peraturan. Ia boleh menyemak dan memadankan sebahagian daripada URL permintaan, dan memetakannya kepada pengawal dan kaedah tindakan tertentu berdasarkan hasil padanan yang ditakrifkan oleh peraturan.

Sebagai contoh, laluan di bawah akan sepadan dengan permintaan yang mengandungi nombor dalam URL, seperti /index.php/test/123. Jika anda menggantikan nombor dalam URL dengan huruf, tidak akan ada padanan.

use think\facade\Route;

Route::rule('^test/(\d+)$', 'Test/index/:1');

Laluan di atas akan memadankan URL yang mengandungi nombor dalam URL permintaan dan menggunakan nombor itu sebagai parameter pertama pengawal. Sebagai contoh, URL permintaan ialah /index.php/test/123, yang akan dipetakan kepada kaedah indeks pengawal Ujian dan menggunakan 123 sebagai parameter pertama.

5. Penghalaan kumpulan

Penghalaan paket merujuk kepada membahagikan laluan kepada beberapa bahagian dan menentukan laluan pengawal yang berbeza dalam setiap bahagian. Menggunakan penghalaan kumpulan memudahkan konfigurasi penghalaan sambil meningkatkan kebolehbacaan kod.

Sebagai contoh, penghalaan kumpulan juga boleh digunakan untuk menentukan laluan tanpa had:

use think\facade\Route;

Route::group('', function () {
    Route::rule('index', 'index/index/index');
    Route::rule('user', 'index/user/index');
    Route::rule('company', 'index/company/index');
});

Di atas mentakrifkan 3 laluan, yang dipetakan kepada pengawal yang berbeza.

3. Petua praktikal untuk penghalaan ThinkPhp

1 Peraturan penghalaan tersuai

Anda boleh menentukan peraturan penghalaan URL anda sendiri melalui Route::rule(). Contohnya, gunakan kod berikut untuk mengatasi pengawal lalai dan kaedah operasi:

use think\facade\Route;

Route::rule('admin/:controller/:action', 'admin/:controller/:action')->middleware('CheckLogin');

Kod di atas mentakrifkan pengawal sebagai akses pekerja bahagian belakang dan tindakan setiap pengawal perlu disahkan oleh CheckLogin perisian tengah.

2. Menjana laluan secara dinamik

Apabila anda mempunyai berbilang laluan yang perlu dihalakan ke pengawal atau kaedah tindakan yang sama, anda boleh mentakrifkannya melalui penghalaan dinamik. Ini menghapuskan keperluan untuk menentukan parameter permintaan yang berasingan untuk setiap laluan sensitif huruf besar-kecil.

Sebagai contoh, anda boleh menggunakan kod berikut untuk menjana laluan secara dinamik:

use think\facade\Route;

$router = Route::group('home', function(){
    Route::rule('news/:id','index/news/detail')->pattern(['id' => '\d+']);
    Route::rule('jobs/:year/:month/:day/:id', 'index/jobs/detail')
        ->pattern(['year' => '\d+', 'month' => '\d+', 'day' => '\d+', 'id' => '\d+']);
    Route::rule('products','index/products/index');
});

Kod di atas menunjukkan laluan kaedah penghantaran yang berbeza kepada kaedah operasi dalam pengawal indeks dan menggunakan Ungkapan biasa untuk memadankan parameter dinamik.

3. Pengagihan laluan

Jika terdapat berbilang sub-aplikasi yang berbeza dalam aplikasi anda, anda boleh menggunakan penghalaan pengedaran untuk mengedarkan permintaan kepada sub-aplikasi yang berbeza.

Sebagai contoh, pengedaran laluan boleh dilaksanakan menggunakan kod berikut:

use think\facade\Route;

Route::group('app', function () {
    Route::rule('blog/:year/:month/:day/:name', 'blog/detail');
    Route::rule('profile', 'user/profile');
    Route::rule('account/login', 'user/login');
});

Route::miss('home/index/missed');

其中,miss方法用来定义路由未匹配时执行的逻辑。

四、结语

本文介绍了ThinkPhp路由的基本概念、使用方法以及一些实用技巧。掌握了路由的概念和使用方法,可以让开发者更加高效地开发Web应用程序。

Atas ialah kandungan terperinci Cara menggunakan penghalaan ThinkPhp. 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