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.
Untuk menyelesaikan isu ini, terdapat dua pilihan utama:
<code class="php">class Example implements Countable { public function count(): int { return 42; } }</code>
<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!