PERINGATAN Jika Anda menggunakan PHP 8.1 atau lebih tinggi, kami sarankan Anda menggunakan enum php asli sebagai pengganti paket ini.
Kami dapat melepaskan beberapa tambalan pemeliharaan tetapi dukungan untuk paket ini jika tidak dihentikan.
Jangan ragu untuk membayar kode kami dan menyesuaikannya dengan kebutuhan Anda.
Perpustakaan ini menyediakan implementasi enum / enumerasi untuk PHP.
map() . Pertama -tama buat kelas baru yang meluas RexlabsEnumEnum dan lakukan hal berikut;
map() : <?php
namespace Rexlabs Enum Readme ;
use Rexlabs Enum Enum ;
/**
* Class City
*
* @package RexlabsEnumReadme
*
* @method static static BRISBANE()
* @method static static MELBOURNE()
* @method static static SYDNEY()
*/
class City extends Enum
{
const BRISBANE = ' Brisbane ' ;
const MELBOURNE = ' Melbourne ' ;
const SYDNEY = ' Sydney ' ;
// OPTIONAL - Provide a map() method if you would like to
// map additional data, which will be available from the ->value() method
public static function map (): array
{
return [
self :: BRISBANE => [ " state " => " QLD " , " population " => "" ],
self :: MELBOURNE => [ " state " => " VIC " , " population " => " 5m " ],
self :: SYDNEY => [ " state " => " NSW " , " population " => " 5m " ],
];
}
}
// Static access
echo City:: BRISBANE ; // "Brisbane"
echo City:: MELBOURNE ; // "Melbourne"
City:: names (); // (array)["BRISBANE", "BRISBANE", "SYDNEY"]
City:: keys (); // (array)["Brisbane", "Melbourne", "Sydney"]
City:: keyForName ( ' BRISBANE ' ); // "Brisbane"
City:: nameForKey ( ' Melbourne ' ); // "MELBOURNE"
City:: isValidKey ( ' Sydney ' ); // (boolean)true
City:: isValidKey ( ' Paris ' ); // (boolean)false
// Getting an instance - all return a City instance.
$ city = City:: BRISBANE ();
$ city = City:: instanceFromName ( ' BRISBANE ' );
$ city = City:: instanceFromKey ( ' Brisbane ' );
// Working with an instance
$ city -> name (); // "BRISBANE"
$ city -> key (); // "Brisbane"
$ city -> value ()[ ' population ' ]; // null - no value mapped
$ city -> is (City:: BRISBANE ); // (boolean)true
$ city -> is (City:: BRISBANE ()); // (boolean)true
$ city -> is (City:: SYDNEY ()); // (boolean)false
$ city -> isNot (City:: SYDNEY ()); // (boolean)true
$ city -> isAnyOf ([City:: BRISBANE ()]); // (boolean)true
$ city -> isNoneOf ([City:: BRISBANE ()]); // (boolean)false
// Or ...
City:: SYDNEY ()-> key (); // "Sydney"
City:: SYDNEY ()-> value (); // (array)["state"=>"NSW", "population"=>"5m"] Untuk menginstal di proyek Anda:
composer require rexlabs/enum Sekarang Anda dapat mengetikkan objek Enum Anda sebagai ketergantungan:
<?php
function announceCity ( City $ city ) {
echo "{ $ city -> key ()} is located in { $ city -> value ()[ " state " ]} , population: { $ city -> value ()[ " population " ]}n" ;
}
// Get a new instance
announceCity (City:: SYDNEY ()); // "Sydney is located in NSW, population: 5m" Setiap instance Enum memberikan metode berikut:
Mengembalikan nama konstan.
$ enum -> name (); Mengembalikan nilai/kunci yang ditetapkan ke konstanta dalam deklarasi const MY_CONST = 'key' .
$ enum -> key (); Mengembalikan nilai (if-any) yang dipetakan (dalam array dikembalikan oleh map() ). Jika tidak ada nilai yang dipetakan, maka metode ini mengembalikan null .
$ enum -> value ();Mengembalikan true jika contoh ini sama dengan instance kunci konstan atau enumerasi yang diberikan.
$ enum -> is (City:: SYDNEY ); // Compare to constant key
$ enum -> is (City:: SYDNEY ()); // Compare to instance Metode __toString() didefinisikan untuk mengembalikan nama konstan.
( string )City:: SYDNEY (); // "SYDNEY" Mengembalikan array yang memetakan kunci konstan ke nilai. Metode ini dapat diimplementasikan secara opsional di sub-kelas. Implementasi default mengembalikan array kunci yang dipetakan ke null .
Mengembalikan serangkaian instance enum.
Mengembalikan serangkaian kunci konstan.
Mengembalikan serangkaian nilai yang ditentukan dalam map() . Jika map() tidak diimplementasikan maka array nilai nol akan dikembalikan.
Mengembalikan array dari semua nama konstan yang dinyatakan dengan kelas.
Mengembalikan array asosiatif constant_name => key, untuk semua nama konstan yang dinyatakan dalam kelas.
Mengembalikan kunci untuk nama konstan yang diberikan.
Mengembalikan nama konstan untuk kunci yang diberikan (kebalikan dari keyForName ).
Mengembalikan nilai (atau nol jika tidak dipetakan) untuk kunci yang diberikan (seperti yang dinyatakan dalam metode map() ).
Mengembalikan kunci untuk nilai yang diberikan (seperti yang dinyatakan dalam metode map() ).
Catatan: Jika nilai duplikat terkandung dalam metode
map()maka hanya kunci pertama yang akan dikembalikan.
Buat contoh enum ini dari nama konstan yang diberikan.
Buat contoh enum ini dari kunci yang diberikan.
Mengembalikan true jika ada kunci yang diberikan.
Pengembalian true jika nama konstan yang diberikan (peka huruf besar-kecil) telah dinyatakan di kelas.
Melempar RexlabsEnumExceptionsInvalidKeyException Jika kunci yang diberikan tidak ada.
Untuk menjalankan tes:
composer testsUntuk menjalankan laporan cakupan:
composer coverage Laporan Cakupan adalah output ke ./tests/report/index.html
Kontribusi dipersilakan, silakan kirimkan permintaan tarik atau buat masalah. Kode yang Anda kirim harus diformat menggunakan standar PSR-1/PSR-2.