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< /code> ialah jenis <p>int<strong>. Jika fungsi dipanggil seperti ini: </strong><div class="code" style="position:relative; padding:0px; margin:0px;"><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><div class="contentsignin">Salin selepas log masuk</div></div></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 given
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!