Jadual Kandungan
Cara Penghalaan Berfungsi
Persediaan Projek
Cara Mengubah Hala Semua Permintaan HTTP ke Penghala
Ubah hala Menggunakan Apache
Ubah hala Menggunakan NGINX
Cara Mencipta Sistem Penghalaan
Tambah Data Tiruan dalam Fail Pandangan
Fikiran akhir
Rumah pembangunan bahagian belakang tutorial php Cara Membina Sistem Penghalaan untuk Apl PHP dari Scratch

Cara Membina Sistem Penghalaan untuk Apl PHP dari Scratch

Nov 29, 2024 pm 04:23 PM
php

Jika anda baru di permulaan perjalanan anda dalam pembangunan PHP, kemungkinan besar anda menggunakan nama fail lengkap dalam URL untuk menavigasi anda aplikasi, seperti server/contact.php. Jangan risau, kita semua bermula dengan cara itu dan begitulah cara kita belajar.

Hari ini, saya ingin membantu anda memperbaik cara anda menavigasi fail dalam permohonan. Kami akan bercakap tentang penghalaan, kerana ia penting dalam mana-mana aplikasi moden. Ia akan membantu anda mengorak langkah ke hadapan dalam anda pembangunan PHP profesional.

Sistem penghalaan hanya memetakan HTTP permintaan kepada pengendali permintaan (fungsi atau kaedah). Dengan kata lain, ia mentakrifkan cara kita menavigasi atau mengakses bahagian yang berbeza pada aplikasi tanpa perlu menaip nama fail. Anda boleh melakukan ini dengan membuat atau menetapkan laluan (atau laluan). Contohnya, pelayan/kenalan laluan membenarkan kami mengakses fail contact.php.

截屏2024-11-29 16.11.16.png

Cara Penghalaan Berfungsi

Perkara pertama, izinkan saya mengingati anda apa penghalaan adalah. Penghalaan membolehkan kami menstrukturkan apl kami dengan cara yang lebih baik dan menyingkirkan kekacauan URL. Ini ialah dua ciri utama yang ditawarkan oleh mana-mana sistem penghalaan yang baik:

  • Mentakrifkan tindakan yang hendak dijalankan untuk setiap permintaan masuk.
  • Menghasilkan URL mesra SEO (cth. /views/users dan bukannya views/user.php?all).

Untuk melakukan sistem penghalaan, kita memerlukan penghala, iaitu tidak lebih daripada fail kemasukan ke apl kami. Secara lalai, fail entri ini dinamakan sebagai index.php. Di dalam fail, kami mentakrifkan sistem penghalaan terima kasih kepada [switch](https://www.php.net/manual/en/control-structures.switch.php) atau [match](https://www.php. net/manual/en/control-structures.match.php).

Akhir sekali, kita mesti mengubah hala semua permintaan ke penghala. Ini dilakukan dalam fail konfigurasi pelayan PHP.

Persediaan Projek

Sebelum bergerak ke hadapan, mari lihat rupa projek itu:

Cara Membina Sistem Penghalaan untuk Apl PHP dari ScratchStruktur fail

Gunakan arahan shell di bawah untuk memulakan projek:

mkdir php-routing & cd php-routingtouch index.php .htaccess
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
  • .htaccess: Fail konfigurasi Apache peringkat direktori. Anda tidak memerlukannya jika anda menggunakan pelayan NGINX.
  • index.php: Ini ialah penghala dan fail kemasukan projek. Semua permintaan masuk akan diubah hala ke sini.
  • paparan: Folder ini menyimpan semua UI untuk projek.

Cara Mengubah Hala Semua Permintaan HTTP ke Penghala

Kami telah mengatakan sebelum ini bahawa pengalihan dilakukan dalam pelayan PHP fail konfigurasi. Jadi anda perlu membuat beberapa tweak bergantung pada sama ada anda gunakan pelayan Apache atau NGINX.

Ubah hala Menggunakan Apache

Di sini, kami boleh menggunakan fail .htaccess yang telah kami buat dalam akar projek dengan mudah. Tambahkan arahan di bawah:

mkdir php-routing & cd php-routingtouch index.php .htaccess
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
  • baris 1: Kami mengaktifkan enjin penulisan semula masa jalan pelayan Apache.
  • baris 2: Kami mengehadkan akses kepada fail fizikal.
  • baris 3: Kami mengubah hala semua permintaan akan datang ke index.php.

Nota: Jika tapak atau apl dicatat pada akar pelayan (atau jika kami tidak mempunyai hos maya), berikut ialah rupa .htaccess:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php
Salin selepas log masuk
Salin selepas log masuk

Dalam kod di atas, gantikan /folder/ dengan nama folder yang mengandungi tapak anda.

Ubah hala Menggunakan NGINX

Fail konfigurasi lalai ialah nama nginx.conf. Fail ini boleh didapati dalam etc/nginx, usr/local/nginx/conf, atau /usr/local/etc/nginx.

Untuk mengubah hala ke index.php gunakan arahan di bawah:

RewriteEngine On
RewriteBase /folder/
RewriteRule ^index\.php$ - [L]RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /folder/index.php [L]
Salin selepas log masuk
Salin selepas log masuk

Lokasi / blok menyatakan bahawa ini adalah padanan untuk semua lokasi melainkan lokasi dinyatakan dengan jelas /.

Arahan try_files memberitahu pelayan bahawa untuk sebarang permintaan kepada URI yang sepadan dengan blok di lokasi, cuba $uri (atau $uri/) dahulu dan jika fail ada, layan fail. Jika tidak, pilihan sandaran (index.php) digunakan. Dan tingkah laku terakhir inilah yang kita mahukan.

Muat semula pelayan selepas pengubahsuaian.

Cara Mencipta Sistem Penghalaan

Kami kini tahu cara penghalaan berfungsi, dan kami sedang malah menghantar semua permintaan kepada penghala. Sekarang adalah masa untuk menulis kod untuk penghala dalam index.php.

Pertama, buat pembolehubah untuk menahan rentetan permintaan HTTP:

location / {
        try_files $uri $uri/ /index.php}
Salin selepas log masuk
Salin selepas log masuk

Pembolehubah ini akan membantu kita membandingkan dengan banyak laluan (laluan) dan panggil antara muka paparan yang sesuai.

$request = $_SERVER['REQUEST_URI'];
Salin selepas log masuk
Salin selepas log masuk

Apa yang berlaku di sini? Pernyataan suis adalah serupa dengan siri pernyataan if pada ungkapan yang sama (pembolehubah). Ia melaksanakan kod hanya apabila pernyataan kes ditemui yang ekspresinya menilai kepada nilai yang sepadan dengan nilai ungkapan suis. Biar saya menggambarkan ini supaya anda boleh mendapatkannya dengan baik.

Mari kita pertimbangkan bahawa pembolehubah kami memegang nilai /views/users/. Apabila sekeping kod di atas akan dijalankan, PHP akan menyemak sama ada nilai /views/users sama dengan nilai pernyataan kes, yang dalam kes kami ialah /views/users. Jadi, syarat ini akan dinilai kepada benar, PHP akan memanggil fail /views/users.php. Jika keadaan bernilai palsu, PHP akan menyemak penyataan kes seterusnya sehingga penghujung blok suis.

Nota: Setiap kali pernyataan kes menilai kepada PHP benar akan terus melaksanakan kod dalam kes berikut kenyataan tanpa perlu menilai kenyataan kes tersebut. Dalam kes kami, PHP juga memerlukan paparan/dep.php. Untuk mengelakkan "tingkah laku buruk" ini, anda mesti menambah pernyataan putus selepas setiap pernyataan kes.

Sekarang, mari masukkan semuanya ke dalam fail index.php kami:

mkdir php-routing & cd php-routingtouch index.php .htaccess
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Seperti yang anda sedia maklum, kami mulakan dengan menyimpan permintaan pengguna dalam pembolehubah $request, kemudian kami menggunakannya dalam pernyataan suis. Demi kod bersih, saya telah mencipta pembolehubah untuk menyimpan nama direktori paparan.

Anda juga akan melihat dua perkara lain:

  • Kedua-dua '' dan '/' digunakan untuk memadankan site.com serta site.com/ apabila pengguna berada dalam akar apl atau tapak web.
  • Terdapat pernyataan kes khas, lalai, untuk memadankan apa sahaja yang tidak dipadankan dengan kes lain, iaitu apabila laluan tidak diketahui.

Mari kita tambahkan beberapa data tiruan dalam paparan kami.

Tambah Data Tiruan dalam Fail Pandangan

Kami telah pun mencipta semua fail dalam direktori paparan. Mari kita beralih ke direktori ini dan tambahkan beberapa kandungan dalam setiap fail.

Cukup letakkan beberapa kandungan dalam setiap fail:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php
Salin selepas log masuk
Salin selepas log masuk
RewriteEngine On
RewriteBase /folder/
RewriteRule ^index\.php$ - [L]RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /folder/index.php [L]
Salin selepas log masuk
Salin selepas log masuk
location / {
        try_files $uri $uri/ /index.php}
Salin selepas log masuk
Salin selepas log masuk
$request = $_SERVER['REQUEST_URI'];
Salin selepas log masuk
Salin selepas log masuk

Seperti yang anda lihat , setiap fail hanya mengandungi tajuk dan perenggan. Jangan ragu untuk menambah apa sahaja kandungan yang anda suka dan menguji penghala.

Fikiran akhir

Dalam tutorial ini, anda mempelajari cara mencipta sistem penghalaan asas dari awal, termasuk:

  • Cara mencipta fail bernama index.php pada akar projek. Ini ialah penghala untuk apl anda.
  • Cara untuk mengubah hala semua permintaan masuk ke penghala. Anda melakukan ini dalam fail konfigurasi pelayan anda.
  • Cara mencipta sistem penghalaan dengan pernyataan suis dalam penghala.

Atas ialah kandungan terperinci Cara Membina Sistem Penghalaan untuk Apl PHP dari Scratch. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Tutorial Java
1655
14
Tutorial PHP
1253
29
Tutorial C#
1228
24
Panduan Pemasangan dan Naik Taraf PHP 8.4 untuk Ubuntu dan Debian Panduan Pemasangan dan Naik Taraf PHP 8.4 untuk Ubuntu dan Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 membawa beberapa ciri baharu, peningkatan keselamatan dan peningkatan prestasi dengan jumlah penamatan dan penyingkiran ciri yang sihat. Panduan ini menerangkan cara memasang PHP 8.4 atau naik taraf kepada PHP 8.4 pada Ubuntu, Debian, atau terbitan mereka

Jelaskan JSON Web Tokens (JWT) dan kes penggunaannya dalam PHP API. Jelaskan JSON Web Tokens (JWT) dan kes penggunaannya dalam PHP API. Apr 05, 2025 am 12:04 AM

JWT adalah standard terbuka berdasarkan JSON, yang digunakan untuk menghantar maklumat secara selamat antara pihak, terutamanya untuk pengesahan identiti dan pertukaran maklumat. 1. JWT terdiri daripada tiga bahagian: header, muatan dan tandatangan. 2. Prinsip kerja JWT termasuk tiga langkah: menjana JWT, mengesahkan JWT dan muatan parsing. 3. Apabila menggunakan JWT untuk pengesahan di PHP, JWT boleh dijana dan disahkan, dan peranan pengguna dan maklumat kebenaran boleh dimasukkan dalam penggunaan lanjutan. 4. Kesilapan umum termasuk kegagalan pengesahan tandatangan, tamat tempoh, dan muatan besar. Kemahiran penyahpepijatan termasuk menggunakan alat debugging dan pembalakan. 5. Pengoptimuman prestasi dan amalan terbaik termasuk menggunakan algoritma tandatangan yang sesuai, menetapkan tempoh kesahihan dengan munasabah,

Bagaimana anda menghuraikan dan memproses HTML/XML dalam PHP? Bagaimana anda menghuraikan dan memproses HTML/XML dalam PHP? Feb 07, 2025 am 11:57 AM

Tutorial ini menunjukkan cara memproses dokumen XML dengan cekap menggunakan PHP. XML (bahasa markup extensible) adalah bahasa markup berasaskan teks yang serba boleh yang direka untuk pembacaan manusia dan parsing mesin. Ia biasanya digunakan untuk penyimpanan data

Terangkan pengikatan statik lewat dalam php (statik: :). Terangkan pengikatan statik lewat dalam php (statik: :). Apr 03, 2025 am 12:04 AM

Mengikat statik (statik: :) Melaksanakan pengikatan statik lewat (LSB) dalam PHP, yang membolehkan kelas panggilan dirujuk dalam konteks statik dan bukannya menentukan kelas. 1) Proses parsing dilakukan pada masa runtime, 2) Cari kelas panggilan dalam hubungan warisan, 3) ia boleh membawa overhead prestasi.

Program PHP untuk mengira vokal dalam rentetan Program PHP untuk mengira vokal dalam rentetan Feb 07, 2025 pm 12:12 PM

Rentetan adalah urutan aksara, termasuk huruf, nombor, dan simbol. Tutorial ini akan mempelajari cara mengira bilangan vokal dalam rentetan yang diberikan dalam PHP menggunakan kaedah yang berbeza. Vokal dalam bahasa Inggeris adalah a, e, i, o, u, dan mereka boleh menjadi huruf besar atau huruf kecil. Apa itu vokal? Vokal adalah watak abjad yang mewakili sebutan tertentu. Terdapat lima vokal dalam bahasa Inggeris, termasuk huruf besar dan huruf kecil: a, e, i, o, u Contoh 1 Input: String = "TutorialSpoint" Output: 6 menjelaskan Vokal dalam rentetan "TutorialSpoint" adalah u, o, i, a, o, i. Terdapat 6 yuan sebanyak 6

PHP dan Python: Membandingkan dua bahasa pengaturcaraan yang popular PHP dan Python: Membandingkan dua bahasa pengaturcaraan yang popular Apr 14, 2025 am 12:13 AM

PHP dan Python masing -masing mempunyai kelebihan mereka sendiri, dan memilih mengikut keperluan projek. 1.PHP sesuai untuk pembangunan web, terutamanya untuk pembangunan pesat dan penyelenggaraan laman web. 2. Python sesuai untuk sains data, pembelajaran mesin dan kecerdasan buatan, dengan sintaks ringkas dan sesuai untuk pemula.

Apakah kaedah Magic PHP (__construct, __destruct, __call, __get, __set, dll) dan menyediakan kes penggunaan? Apakah kaedah Magic PHP (__construct, __destruct, __call, __get, __set, dll) dan menyediakan kes penggunaan? Apr 03, 2025 am 12:03 AM

Apakah kaedah sihir PHP? Kaedah sihir PHP termasuk: 1. \ _ \ _ Membina, digunakan untuk memulakan objek; 2. \ _ \ _ Destruct, digunakan untuk membersihkan sumber; 3. \ _ \ _ Call, mengendalikan panggilan kaedah yang tidak wujud; 4. \ _ \ _ Mendapatkan, melaksanakan akses atribut dinamik; 5. \ _ \ _ Set, melaksanakan tetapan atribut dinamik. Kaedah ini secara automatik dipanggil dalam situasi tertentu, meningkatkan fleksibiliti dan kecekapan kod.

PHP: Bahasa utama untuk pembangunan web PHP: Bahasa utama untuk pembangunan web Apr 13, 2025 am 12:08 AM

PHP adalah bahasa skrip yang digunakan secara meluas di sisi pelayan, terutamanya sesuai untuk pembangunan web. 1.PHP boleh membenamkan HTML, memproses permintaan dan respons HTTP, dan menyokong pelbagai pangkalan data. 2.PHP digunakan untuk menjana kandungan web dinamik, data borang proses, pangkalan data akses, dan lain -lain, dengan sokongan komuniti yang kuat dan sumber sumber terbuka. 3. PHP adalah bahasa yang ditafsirkan, dan proses pelaksanaan termasuk analisis leksikal, analisis tatabahasa, penyusunan dan pelaksanaan. 4.Php boleh digabungkan dengan MySQL untuk aplikasi lanjutan seperti sistem pendaftaran pengguna. 5. Apabila debugging php, anda boleh menggunakan fungsi seperti error_reporting () dan var_dump (). 6. Mengoptimumkan kod PHP untuk menggunakan mekanisme caching, mengoptimumkan pertanyaan pangkalan data dan menggunakan fungsi terbina dalam. 7

See all articles