Pengisytiharan jenis skalar PHP dan 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:
deklarasikan(strict_types=1);
Dengan menyatakan nilai strict_types (1 atau 0), 1 dalam kod Menunjukkan mod semakan jenis yang ketat, yang digunakan untuk panggilan fungsi dan penyataan kembali 0 menunjukkan mod semakan jenis lemah.
Parameter jenis yang boleh digunakan ialah:
int
terapung
-
bool
rentetan
antaramuka
array
<>< . 🎜>9
Contoh
<?php // 强制模式 function sum(int ...$ints) { return array_sum($ints); } print(sum(2, '3', 4.1)); ?>Memandangkan atur cara di atas menggunakan mod ketat, jika jenis integer yang tidak sesuai muncul dalam parameter, ralat akan laporkan. Laksanakan Hasil keluaran ialah:
PHP Ralat maut: Ralat Jenis Tidak Ditangkap: Argumen 2 dihantar kepada jumlah() mestilah daripada jenis integer, rentetan yang diberikan, dipanggil...
Pengisytiharan jenis pulangan
PHP 7 menambah sokongan untuk pengisytiharan jenis pulangan, yang menentukan jenis nilai pulangan fungsi. Jenis pemulangan yang boleh diisytiharkan ialah:
int
terapung
bool
- rentetan
- antaramuka
- array<>
- boleh dipanggil
- Tokoh pengisytiharan jenis pengembalianInstance, hasil pengembalian diperlukan untuk menjadi integer:
Instance
<?php // 严格模式 declare(strict_types=1); function sum(int ...$ints) { return array_sum($ints); } print(sum(2, '3', 4.1)); ?>
- Hasil keluaran pelaksanaan program di atas ialah: 5
Instance
Memandangkan program di atas menggunakan mod ketat, nilai pulangan mestilah int, tetapi hasil pengiraan adalah terapung, jadi ralat akan dilaporkan Hasil output pelaksanaan ialah: <?php
declare(strict_types=1);
function returnIntValue(int $value): int
{
return $value;
}
print(returnIntValue(5));
?>
Ralat maut: Uncaught TypeError: Nilai pulangan returnIntValue() mestilah daripada jenis integer, float dikembalikan...