Rumah >pembangunan bahagian belakang >tutorial php >Masa depan jenis parameter fungsi PHP
PHP 8.0 dan versi yang lebih baru telah menambah ciri "jenis ketat", yang menyelesaikan masalah penukaran automatik apabila jenis parameter tidak sepadan. Selepas jenis parameter fungsi diisytiharkan, jika jenis input tidak sepadan, pengecualian TypeError akan dinaikkan. Ciri ini meningkatkan keteguhan kod, kebolehbacaan dan sokongan IDE yang dipertingkatkan. Apabila menggunakannya, anda perlu memberi perhatian untuk mengemas kini kod sedia ada, mempertimbangkan jenis kesatuan dan memahami corak jenis perpustakaan pihak ketiga.
Arah aliran masa depan jenis parameter fungsi PHP: mod ketat
PHP 8.0 dan kemudiannya memperkenalkan ciri baharu yang dipanggil "penaipan ketat", yang menyelesaikan masalah ketidakpadanan jenis parameter Masalah penukaran automatik nilai pembolehubah . Berikut ialah sintaks fungsi:
function myFunction(string $param1, int $param2): void { // ... }
Dalam contoh di atas, fungsi myFunction
mengisytiharkan parameternya $param1
sebagai jenis myFunction
函数声明其参数 $param1
为 string 类型,而 $param2
为 int 类型。如果函数被这样调用:
myFunction(123, "ABC");
PHP 将不会自动将 123
转换为字符串或 ABC
string
$param2 ialah jenis <p>int<strong>. Jika fungsi dipanggil seperti ini: </strong><pre class='brush:php;toolbar:false;'>function validateInput($name, $email)
{
if (empty($name) || empty($email)) {
throw new Exception("Name or email cannot be empty.");
}
if (!is_string($name) || !is_string($email)) {
throw new Exception("Name and email must be strings.");
}
}</pre></p>PHP tidak akan menukar <code>123
secara automatik kepada rentetan atau ABC
kepada integer, tetapi akan menimbulkan TypeError. Ini membantu mengelakkan penukaran jenis tidak sengaja dan meningkatkan keteguhan kod anda.
Contoh Praktikal: Mengesahkan Input Pengguna
Pertimbangkan fungsi yang mengesahkan input pengguna:validateInput(123, "example@example.com"); // TypeError: Argument 1 passed to validateInput() must be of the type string, integer given validateInput("John Doe", true); // TypeError: Argument 2 passed to validateInput() must be of the type string, boolean givenDalam versi PHP 7.x yang tidak menggunakan penaipan yang ketat, jika input pengguna bukan rentetan, fungsi akan senyap menukarkannya Tukar kepada rentetan. Ini boleh membawa kepada pepijat dan tingkah laku yang tidak konsisten. Dalam versi PHP 8.0+ dengan penaipan yang ketat, fungsi yang sama menguatkuasakan jenis rentetan dan membuang pengecualian TypeError:
rrreee
IDE boleh memberikan pelengkapan automatik dan pemeriksaan jenis yang lebih baik.
Nota
Atas ialah kandungan terperinci Masa depan jenis parameter fungsi PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!