


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.
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:
Struktur fail
Gunakan arahan shell di bawah untuk memulakan projek:
mkdir?php-routing?&?cd?php-routingtouch?index.php?.htaccess
- .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
- 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
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]
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}
Pembolehubah ini akan membantu kita membandingkan dengan banyak laluan (laluan) dan panggil antara muka paparan yang sesuai.
$request?=?$_SERVER['REQUEST_URI'];
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
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
RewriteEngine?On RewriteBase?/folder/ RewriteRule?^index\.php$?-?[L]RewriteCond?%{REQUEST_FILENAME}?!-f RewriteCond?%{REQUEST_FILENAME}?!-d RewriteRule?.?/folder/index.php?[L]
location?/?{ ????????try_files?$uri?$uri/?/index.php}
$request?=?$_SERVER['REQUEST_URI'];
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!

Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io
Penyingkiran pakaian AI

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

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Kaedah untuk mendapatkan ID sesi semasa dalam PHP adalah menggunakan fungsi session_id (), tetapi anda mesti menghubungi session_start () untuk berjaya mendapatkannya. 1. Panggil session_start () untuk memulakan sesi; 2. Gunakan session_id () untuk membaca ID Sesi dan mengeluarkan rentetan yang serupa dengan ABC123DEF456GHI789; 3 Jika pulangan kosong, periksa sama ada session_start () hilang, sama ada pengguna mengakses untuk kali pertama, atau sama ada sesi dimusnahkan; 4. ID Sesi boleh digunakan untuk pembalakan, pengesahan keselamatan dan komunikasi silang, tetapi keselamatan perlu diberi perhatian. Pastikan sesi itu diaktifkan dengan betul dan ID boleh diperolehi dengan jayanya.

Untuk mengekstrak substrings dari rentetan php, anda boleh menggunakan fungsi substr (), iaitu substra sintaks (string $ string, int $ start ,? int $ panjang = null), dan jika panjang tidak ditentukan, ia akan dipintas hingga akhir; Apabila memproses aksara berbilang bit seperti Cina, anda harus menggunakan fungsi MB_SUBSTR () untuk mengelakkan kod yang dihiasi; Jika anda perlu memintas rentetan mengikut pemisah tertentu, anda boleh menggunakan Eksploitasi () atau menggabungkan StrPOS () dan Substr () untuk melaksanakannya, seperti mengekstrak sambungan nama fail atau nama domain.

UnittestinginphpinvolvesveryingindividualcodeUnitsLikeFunctionsormethodstocatchbugsearlyandensurerurereliableFactoring.1) setupphpunitviacomposer, createatestdirectory, danconfigureautoloadandphpunit.xml.2soSteSteSteShpunit.xml.2)

Dalam PHP, kaedah yang paling biasa adalah untuk memecah rentetan ke dalam array menggunakan fungsi eksploit (). Fungsi ini membahagikan rentetan ke dalam pelbagai bahagian melalui pembatas yang ditentukan dan mengembalikan array. Sintaks adalah eksploit (pemisah, rentetan, had), di mana pemisah adalah pemisah, rentetan adalah rentetan asal, dan had adalah parameter pilihan untuk mengawal bilangan maksimum segmen. Contohnya $ str = "epal, pisang, oren"; $ arr = meletup (",", $ str); Hasilnya ialah ["Apple", "Bana

Jenis data JavaScript dibahagikan kepada jenis primitif dan jenis rujukan. Jenis primitif termasuk rentetan, nombor, boolean, null, undefined, dan simbol. Nilai -nilai tidak berubah dan salinan disalin apabila memberikan nilai, jadi mereka tidak mempengaruhi satu sama lain; Jenis rujukan seperti objek, tatasusunan dan fungsi menyimpan alamat memori, dan pembolehubah menunjuk objek yang sama akan mempengaruhi satu sama lain. Typeof dan Instanceof boleh digunakan untuk menentukan jenis, tetapi memberi perhatian kepada isu -isu sejarah TypeOfNull. Memahami kedua -dua jenis perbezaan ini dapat membantu menulis kod yang lebih stabil dan boleh dipercayai.

STD :: Chrono digunakan dalam C untuk memproses masa, termasuk mendapatkan masa semasa, mengukur masa pelaksanaan, titik masa operasi dan tempoh, dan masa analisis pemformatan. 1. Gunakan std :: chrono :: system_clock :: sekarang () untuk mendapatkan masa semasa, yang boleh ditukar menjadi rentetan yang boleh dibaca, tetapi jam sistem mungkin tidak membosankan; 2. Gunakan std :: chrono :: steady_clock untuk mengukur masa pelaksanaan untuk memastikan monoton, dan mengubahnya menjadi milisaat, saat dan unit lain melalui duration_cast; 3. Titik masa (time_point) dan tempoh (tempoh) boleh saling beroperasi, tetapi perhatian harus dibayar kepada keserasian unit dan zaman jam (Epoch)

Dalam PHP, untuk lulus pemboleh ubah sesi ke halaman lain, kunci adalah untuk memulakan sesi dengan betul dan menggunakan nama kunci $ _Session yang sama. 1. Sebelum menggunakan pembolehubah sesi untuk setiap halaman, ia mesti dipanggil session_start () dan diletakkan di hadapan skrip; 2. Set pembolehubah sesi seperti $ _Session ['username'] = 'Johndoe' pada halaman pertama; 3. Selepas memanggil session_start () pada halaman lain, akses pembolehubah melalui nama kunci yang sama; 4. Pastikan bahawa session_start () dipanggil pada setiap halaman, elakkan mengeluarkan kandungan terlebih dahulu, dan periksa bahawa laluan penyimpanan sesi pada pelayan boleh ditulis; 5. Gunakan SES

ToAccessenVironmentVariablesInphp, useGetenv () orthe $ _envsuperglobal.1.getenv ('var_name') retrievesaspecificvariable.2. $ _ En V ['var_name'] AccessSvariablesifvariables_orderinphp.iniincludes "e" .setVariablesviacliwithvar = valuePhpscript.php, inapach
