PHP 7 memperkenalkan deklarasi tipe kembali . Yang berarti saya sekarang dapat menunjukkan nilai kembali adalah kelas tertentu, antarmuka, array, callable atau salah satu dari jenis skalar yang baru dapat diindikasikan, sebagaimana dimungkinkan untuk parameter fungsi.
function returnHello(): string {
return 'hello';
}
Seringkali terjadi bahwa suatu nilai tidak selalu ada, dan Anda mungkin mengembalikan sesuatu dengan jenis tertentu, atau nol. Meskipun Anda dapat membuat parameter nullable dengan menetapkan default ke null ( DateTime $time = null
), tampaknya tidak ada cara untuk melakukan ini untuk tipe pengembalian. Apakah memang demikian, atau apakah saya entah bagaimana tidak menemukan cara melakukannya? Ini tidak berfungsi:
function returnHello(): string? {
return 'hello';
}
function returnHello(): string|null {
return 'hello';
}
php
nullable
return-type
type-hinting
php-7
Jeroen De Dauw
sumber
sumber
function returnString(?string $stringNull) : ?string { return $stringNull;}
Trowable
antarmuka PHP7 (khusus, memperluasTypeError
)Jawaban:
PHP 7.1 Sekarang mendukung jenis pengembalian yang dapat dibatalkan . RFC pertama yang saya tautkan adalah yang mereka pilih:
jawaban lama:
Karena komentar saya sebenarnya adalah jawaban untuk pertanyaan:
PHP 7 tidak akan mendukung tipe pengembalian yang nullable dulu, tapi ada RFC di luar untuk mengatasi hal itu, bertujuan mendarat di PHP 7.1. Jika lolos, sintaks akan mempengaruhi semua tip-petunjuk (baik tipik tipe maupun tip-tip):
Ada juga RFC yang bersaing untuk menambah jenis serikat, yang akan dapat melakukan hal yang sama, tetapi akan terlihat berbeda:
Untuk saat ini, Anda harus menulis:
Atau cukup kembalikan string kosong agar konsisten dengan jenis pengembalian, dan periksa nilai falsy:
sumber
PHP 7 won't support nullable return-types just yet, but there's an RFC out to address just that
- yeah, RFC, "dulu". Jangan salah paham - saya pengguna PHP yang sangat berat karena PHP3 yang benar-benar jelek sampai sekarang, tidak ada celah, tetapi ketika saya melihat semua RFC ini mereka menolak untuk 7, kesan saya hanya "WTF ?!". Pengguna melihat kekacauan dan bersedia untuk membersihkannya dengan cara yang kompatibel mundur dan mereka hanya mendapatkan "tidak". Bersihkan metode penamaan berantakan? Tetapnull
bukan warga yang terlalu spesial? Tidak, tidak dibutuhkan. Tambahkan opsi untuk membuat semua hal sensitif huruf? Nah .. Dan kemudian, mengejutkan bahwa orang-orang beralih.var
). Apa yang disayangkan adalah bahwa sebagai gantinya, mereka menerima satu terlalu banyak yang bagus (misalnya, operator pesawat ruang angkasa)Jenis Nullable tersedia di PHP 7.1.
Ini adalah contoh sintaks:
PHP 7.1 sekarang GA dan Anda dapat memutakhirkan dari PHP 7.0 (hanya ada beberapa perubahan yang tidak kompatibel yang harus Anda periksa)
sumber
Ini bekerja dengan semua jenis.
Contoh:
sumber