Rumah >pembangunan bahagian belakang >tutorial php >Bagaimanakah Saya Melaksanakan Penghitungan dalam PHP, Mempertimbangkan Sokongan Versi Berbeza?

Bagaimanakah Saya Melaksanakan Penghitungan dalam PHP, Mempertimbangkan Sokongan Versi Berbeza?

Barbara Streisand
Barbara Streisandasal
2024-12-15 04:09:17511semak imbas

How Do I Implement Enumerations in PHP, Considering Different Version Support?

Enumerations on PHP: Beyond Constants and Arrays

Enumerations, atau ringkasnya enum, menyediakan cara yang mudah untuk mentakrifkan set nilai yang dipratentukan yang boleh digunakan secara konsisten merentas pangkalan kod. Walaupun PHP tidak menyokong enum secara asli, terdapat beberapa penyelesaian yang boleh menyediakan kefungsian yang serupa.

PHP 8.1 dan Melebihi: Native Enumerations

Sehingga PHP 8.1, enumerations kini disokong sepenuhnya sebagai ciri bahasa terbina dalam. Penghitungan boleh ditakrifkan menggunakan kata kunci enum dan membenarkan kedua-dua penetapan nilai malar dan penggunaan mudah bagi perwakilan rentetannya.

enum DaysOfWeek: int
{
    case Sunday = 0;
    case Monday = 1;
    // etc.
}

$today = DaysOfWeek::Sunday;
var_dump($today->value); // 0
var_dump($today->name); // "Sunday"

PHP 8.0 dan Terdahulu: Pelaksanaan Tersuai

Sebelum PHP 8.1, pembangun terpaksa bergantung pada pelaksanaan tersuai untuk mencapai gelagat seperti enum. Satu pendekatan biasa melibatkan penentuan pemalar dalam kelas abstrak. Walaupun ini menyediakan nilai yang dinamakan, ia tidak menawarkan jenis keselamatan atau pengesahan.

abstract class DaysOfWeek
{
    const Sunday = 0;
    const Monday = 1;
    // etc.
}

$today = DaysOfWeek::Sunday;

Pelaksanaan Tersuai Dipertingkat dengan Refleksi

Untuk menangani batasan kelas abstrak pendekatan, pelaksanaan yang dipertingkatkan menggunakan refleksi boleh memberikan pengesahan yang lebih mantap dan pengendalian ralat:

abstract class BasicEnum {
    // ... (reflection helper methods)

    public static function isValidName($name, $strict = false) {
        // ... (validation logic)
    }

    public static function isValidValue($value, $strict = true) {
        // ... (validation logic)
    }
}

abstract class DaysOfWeek extends BasicEnum {
    const Sunday = 0;
    const Monday = 1;
    // etc.
}

DaysOfWeek::isValidName('Humpday');                  // false
DaysOfWeek::isValidName('Monday');                   // true
DaysOfWeek::isValidName('monday', $strict = true);   // false
DaysOfWeek::isValidValue(0);                         // true
DaysOfWeek::isValidValue(7);                         // false

Pelaksanaan ini menyediakan rangka kerja yang fleksibel dan boleh diperluaskan untuk mencipta enum tersuai dengan keselamatan dan pengesahan jenis yang dipertingkatkan. Sama ada bergantung pada enum asli dalam PHP 8.1 atau melaksanakan penyelesaian tersuai untuk versi terdahulu, pembangun mempunyai beberapa pilihan untuk memanfaatkan gelagat seperti enum dalam PHP.

Atas ialah kandungan terperinci Bagaimanakah Saya Melaksanakan Penghitungan dalam PHP, Mempertimbangkan Sokongan Versi Berbeza?. 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