Jenis skalar PHP dan pengisytiharan jenis nilai pulangan
Pengisytiharan jenis skalar
Secara lalai, semua fail PHP berada dalam mod semakan jenis lemah.
PHP 7 menambah ciri pengisytiharan jenis skalar Terdapat dua mod untuk pengisytiharan jenis skalar:
Mod paksa (lalai)
<🎜. > Mod ketat
format sintaks pengisytiharan jenis skalar:deklarasi(strict_types=1); kod Dengan menyatakan nilai strict_types (1 atau 0), 1 menunjukkan mod semakan jenis ketat, yang digunakan untuk panggilan fungsi dan penyataan kembali 0 menunjukkan mod semakan jenis lemah. deklarasikan(strict_types=1) mestilah pernyataan pertama fail. Jika pernyataan ini muncul di tempat lain dalam fail, ralat kompilasi akan dihasilkan dan mod blok dilarang secara jelas.
Arahan strict_types mempengaruhi fail yang ditentukan dan tidak akan menjejaskan fail lain yang disertakan olehnya (melalui termasuk, dsb.). Arahan ini disusun semasa masa jalan dan tidak boleh diubah suai. Cara ia berfungsi ialah dengan menetapkan bendera dalam opcode supaya panggilan fungsi dan semakan jenis kembali mematuhi kekangan jenis.
Parameter jenis yang boleh digunakan ialah:
intterapungbool
rentetan
antara muka
array
boleh dipanggil
contoh mod paksa
contoh<?php
// 强制模式
function sum(int ...$ints)
{
return array_sum($ints);
}
print(sum(2, '3', 4.1));
?>
Hasil output pelaksanaan program di atas ialah:
Contoh mod ketat
Instance<?php
// 严格模式
declare(strict_types=1);
function sum(int ...$ints)
{
return array_sum($ints);
}
print(sum(2, '3', 4.1));
?>
Memandangkan atur cara di atas menggunakan mod ketat, jika integer yang tidak sesuai muncul dalam parameter Jenis akan melaporkan ralat, dan hasil output pelaksanaan ialah:
Pengisytiharan jenis pulangan
PHP 7 menambah sokongan untuk pengisytiharan jenis pulangan, yang menentukan pemulangan fungsi jenis nilai. Jenis pemulangan yang boleh diisytiharkan ialah:
intterapungbool
rentetan
antara muka
array
Dalam contoh boleh panggil
contoh pengisytiharan jenis pulangan
, hasil pulangan diperlukan untuk menjadi integer: instance<?php
declare(strict_types=1);
function returnIntValue(int $value): int
{
return $value;
}
print(returnIntValue(5));
?>
Hasil keluaran pelaksanaan program di atas ialah:
Instance
<?php declare(strict_types=1); function returnIntValue(int $value): int { return $value + 1.0; } print(returnIntValue(5)); ?>
Memandangkan program di atas menggunakan mod ketat, nilai pulangan mestilah int, tetapi hasil pengiraan adalah terapung, jadi ralat akan dilaporkan Hasil output pelaksanaan ialah:
Ralat maut : Uncaught TypeError: Nilai pulangan returnIntValue() mestilah daripada jenis integer, float dikembalikan...