PHP juga telah mula terlibat dalam pengisytiharan jenis PHP7 telah menambah ciri pengisytiharan jenis Artikel berikut akan membawa anda memahami ciri-ciri pengisytiharan jenis PHP dan saya harap ia akan berlaku berguna kepada semua orang!
Baru-baru ini saya telah mengkaji ciri baharu PHP7 dan mendapati bahawa PHP juga telah mula menggunakan pengisytiharan jenis Faedah berbuat demikian adalah jelas: ia boleh meningkatkan kelajuan berjalan program.
Berikut ialah pengenalan ciri baharu ini:
Secara lalai, semua fail PHP berada dalam mod semakan jenis lemah.
PHP7 telah menambah ciri pengisytiharan jenis Terdapat dua mod untuk pengisytiharan jenis:
Format sintaks pengisytiharan jenis skalar:
declare(strict_types=1);
Nilai strict_types:
mod paksa (mod lalai )
<?php function sum(int ...$ints) { return array_sum($ints); } print(sum(1, '2', 3.1)); ?>
6
Mod ketat
<?php declare(strict_types=1); function sum(int ...$ints) { return array_sum($ints); } print(sum(1, '2', 3.1)); ?>
PHP Fatal error: Uncaught TypeError: Argument 2 passed to sum() must be of the type integer, string given, called in……
Pengisytiharan jenis pemulangan
PHP7 menambah sokongan untuk pengisytiharan jenis pemulangan, jenis pemulangan pengisytiharan Menentukan jenis nilai pulangan fungsi. Jenis pulangan yang boleh diisytiharkan oleh ialah:Perangkap yang saya pijak
Saya benar-benar berasa buruk di sini Selepas melalui lubang, dalam versi baharu phpstorm, kod gesaan akan muncul mengikut jenis nilai pulangan, membimbing anda untuk menambah pengisytiharan jenis pulangan, jadi saya menambahnya. Tetapi kemudian disebabkan oleh perubahan perniagaan atau pengoptimuman kod, saya hanya mengubah suai nilai pulangan (contohnya, saya mengembalikan tatasusunan sebelum ini, tetapi selepas pengubahsuaian, saya mengembalikan int), tetapi saya terlupa untuk mengubah suai pengisytiharan jenis pulangan (lagipun, saya ada telah digunakan untuk jenis bahasa lemah PHP selama bertahun-tahun... ), ini akan membuang pengecualian dan menyebabkan ralat Ini adalah perangkap yang saya pijak, sila ambil perhatian apabila menggunakannya.Berfikir
Bahasa GO tidak akan menghadapi masalah yang saya nyatakan di atas, kerana jika jenis nilai pulangan dan pengisytiharan jenis pulangan Jika kompilasi gagal, ralat akan dilaporkan semasa penyusunan.
Sebagai bahasa yang ditaip lemah, PHP telah membuat pengoptimuman seperti pengisytiharan jenis pulangan, tetapi ia tidak memerlukan kami untuk menyusun sebelum bahasa itu dilaksanakan Ia boleh dikeluarkan dan dijalankan secara langsung. jadi ia tidak dapat mencapai bahasa Go "Penggera kompilasi" berlaku, PHP akan membuang pengecualian secara langsung semasa pelaksanaan.
<?php declare(strict_types=1); function returnIntValue(int $value): int { return $value; } print(returnIntValue(5)); ?>
5
Contoh ralat pengisytiharan jenis kembali
<?php declare(strict_types=1); function returnIntValue(int $value): int { return $value + 3.0; } print(returnIntValue(1)); ?>
Fatal error: Uncaught TypeError: Return value of returnIntValue() must be of the type integer, float returned...
fungsi void
Nota: Fungsi yang ditakrifkan dengan jenis kekosongan pemulangan tidak boleh mempunyai nilai pulangan, walaupun ia mengembalikan null.
Kaedah yang nilai pulangannya diisytiharkan sebagai jenis batal mesti sama ada meninggalkan pernyataan pulangan sama sekali atau menggunakan pernyataan pulangan kosong.Contoh
<?php function exchange(&$left, &$right) : void { if ($left === $right) { return; } $tmp = $left; $left = $right; $right = $tmp; } $a = 1; $b = 2; var_dump(exchange($a, $b), $a, $b);
null int(2) int(1)
Alamat asal : https: //juejin.cn/post/7062942459247984648Pengarang: Wang Zhongyang GoPembelajaran yang disyorkan: "
Tutorial Video PHP"
Atas ialah kandungan terperinci PHP7 juga menyokong pengisytiharan jenis Mari kita bercakap tentang ciri ini!. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!