Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana Mengendalikan Ketidakpadanan Jenis Pulangan dalam PHP 8.1?

Bagaimana Mengendalikan Ketidakpadanan Jenis Pulangan dalam PHP 8.1?

Susan Sarandon
Susan Sarandonasal
2024-10-31 07:41:01663semak imbas

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>

Dan kelas yang melaksanakan Countable:

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

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>
  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>

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!

Kenyataan:
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