


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!

php把负数转为正整数的方法:1、使用abs()函数将负数转为正数,使用intval()函数对正数取整,转为正整数,语法“intval(abs($number))”;2、利用“~”位运算符将负数取反加一,语法“~$number + 1”。

实现方法:1、使用“sleep(延迟秒数)”语句,可延迟执行函数若干秒;2、使用“time_nanosleep(延迟秒数,延迟纳秒数)”语句,可延迟执行函数若干秒和纳秒;3、使用“time_sleep_until(time()+7)”语句。

php字符串有下标。在PHP中,下标不仅可以应用于数组和对象,还可应用于字符串,利用字符串的下标和中括号“[]”可以访问指定索引位置的字符,并对该字符进行读写,语法“字符串名[下标值]”;字符串的下标值(索引值)只能是整数类型,起始值为0。

php除以100保留两位小数的方法:1、利用“/”运算符进行除法运算,语法“数值 / 100”;2、使用“number_format(除法结果, 2)”或“sprintf("%.2f",除法结果)”语句进行四舍五入的处理值,并保留两位小数。

在php中,可以使用substr()函数来读取字符串后几个字符,只需要将该函数的第二个参数设置为负值,第三个参数省略即可;语法为“substr(字符串,-n)”,表示读取从字符串结尾处向前数第n个字符开始,直到字符串结尾的全部字符。

判断方法:1、使用“strtotime("年-月-日")”语句将给定的年月日转换为时间戳格式;2、用“date("z",时间戳)+1”语句计算指定时间戳是一年的第几天。date()返回的天数是从0开始计算的,因此真实天数需要在此基础上加1。

方法:1、用“str_replace(" ","其他字符",$str)”语句,可将nbsp符替换为其他字符;2、用“preg_replace("/(\s|\ \;||\xc2\xa0)/","其他字符",$str)”语句。

查找方法:1、用strpos(),语法“strpos("字符串值","查找子串")+1”;2、用stripos(),语法“strpos("字符串值","查找子串")+1”。因为字符串是从0开始计数的,因此两个函数获取的位置需要进行加1处理。


Alat AI Hot

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

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

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Pelayar Peperiksaan Selamat
Pelayar Peperiksaan Selamat ialah persekitaran pelayar selamat untuk mengambil peperiksaan dalam talian dengan selamat. Perisian ini menukar mana-mana komputer menjadi stesen kerja yang selamat. Ia mengawal akses kepada mana-mana utiliti dan menghalang pelajar daripada menggunakan sumber yang tidak dibenarkan.

Penyesuai Pelayan SAP NetWeaver untuk Eclipse
Integrasikan Eclipse dengan pelayan aplikasi SAP NetWeaver.

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

DVWA
Damn Vulnerable Web App (DVWA) ialah aplikasi web PHP/MySQL yang sangat terdedah. Matlamat utamanya adalah untuk menjadi bantuan bagi profesional keselamatan untuk menguji kemahiran dan alatan mereka dalam persekitaran undang-undang, untuk membantu pembangun web lebih memahami proses mengamankan aplikasi web, dan untuk membantu guru/pelajar mengajar/belajar dalam persekitaran bilik darjah Aplikasi web keselamatan. Matlamat DVWA adalah untuk mempraktikkan beberapa kelemahan web yang paling biasa melalui antara muka yang mudah dan mudah, dengan pelbagai tahap kesukaran. Sila ambil perhatian bahawa perisian ini

Dreamweaver Mac版
Alat pembangunan web visual