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 ringkasan Tukar parameter 4.1 kepada integer 4 dan kemudian tambahkannya.

Contoh Mod Tegas

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 pengembalian

    Instance, 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 ralat pengisytiharan jenis kembali

Instance

<?php
declare(strict_types=1);
function returnIntValue(int $value): int
{
   return $value;
}
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...