Bagaimana Mengendalikan Ketidakpadanan Jenis Pulangan dalam PHP 8.1?

Susan Sarandon
Lepaskan: 2024-10-31 07:41:01
asal
662 orang telah melayarinya

How to Handle Return Type Mismatches in PHP 8.1?

Rujukan: Jenis pengembalian ... harus sama ada serasi dengan ..., atau atribut #[ReturnTypeWillChange] harus digunakan

Penjelasan: Kovarians Jenis Pengembalian dan Fungsi Dihentikan

PHP 8.1 memperkenalkan perubahan dalam tingkah laku untuk jenis pulangan kaedah. Dalam versi sebelumnya, anda boleh menentukan kaedah tanpa menyatakan jenis pulangan. Walau bagaimanapun, PHP 8.1 kini lalai untuk memerlukan jenis pulangan untuk kaedah yang diisytiharkan atau diwarisi daripada antara muka. Perubahan ini bertujuan untuk meningkatkan keselamatan jenis dan memastikan nilai pulangan sejajar dengan kontrak antara muka.

Apabila jenis pulangan ditambahkan pada kaedah yang tidak ditaip sebelum ini, PHP 8.1 menyemak sama ada jenis nilai pulangan mematuhi pulangan yang diisytiharkan taip. Sebagai contoh, jika anda mempunyai kaedah dalam antara muka yang ditakrifkan sebagai:

<code class="php">interface Countable {
    public function count(): int;
}</code>
Salin selepas log masuk

Dan kelas yang melaksanakan Countable:

<code class="php">class Example implements Countable {
    public function count() {
        return 42;
    }
}</code>
Salin selepas log masuk

PHP 8.1 akan menaikkan notis penamatan kerana nilai pulangan tidak ditaip secara eksplisit sebagai integer, yang bercanggah dengan takrifan antara muka.

Penyelesaian: Menentukan Jenis Pulangan atau Menggunakan Atribut #[ReturnTypeWillChange]

Untuk menyelesaikan isu ini, terdapat dua pilihan utama:

  1. Menentukan Jenis Pulangan: Anda boleh menentukan secara eksplisit jenis pemulangan kaedah dalam pelaksanaan kelas, memastikan ia sepadan dengan definisi antara muka. Dalam kes ini, anda akan mengemas kini kaedah kiraan kepada:
<code class="php">class Example implements Countable {
    public function count(): int {
        return 42;
    }
}</code>
Salin selepas log masuk
  1. Menggunakan Atribut #[ReturnTypeWillChange]: Jika anda perlu mengekalkan keserasian dengan PHP yang lebih lama versi atau sedang merancang untuk menukar jenis pemulangan pada masa hadapan, anda boleh menggunakan atribut #[ReturnTypeWillChange] untuk menyekat notis penamatan buat sementara waktu. Ini membolehkan anda menangguhkan perubahan jenis pemulangan sehingga masa yang akan datang. Penggunaan atribut ini ditunjukkan di bawah:
<code class="php">class Example implements Countable {
    #[\ReturnTypeWillChange]
    public function count() {
        return 42;
    }
}</code>
Salin selepas log masuk

Adalah penting untuk ambil perhatian bahawa PHP 9.0 berhasrat untuk menguatkuasakan jenis pulangan, menjadikan penggunaan #[ReturnTypeWillChange] tidak diperlukan. Oleh itu, adalah disyorkan untuk memindahkan kod anda secara beransur-ansur untuk menentukan jenis pulangan secara eksplisit dan mengalih keluar penggunaan atribut apabila boleh.

Atas ialah kandungan terperinci Bagaimana Mengendalikan Ketidakpadanan Jenis Pulangan dalam PHP 8.1?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!