Enumerasi (Enum)
Definisikan sekumpulan nilai yang aman secara tipe dengan enum backed dan murni PHP 8.1.
Enumerasi (Enum) adalah pelajaran PHP Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar PHP Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus PHP Academy mencakup 4 pelajaran total.
Apa Itu Enum?
PHP 8.1 memperkenalkan enum—tipe khusus yang membatasi variabel pada sekumpulan nilai bernama yang telah ditentukan, sehingga kode menjadi lebih ekspresif dan aman secara tipe.
Enum Murni (Enum Tanpa Nilai)
Enum murni memiliki kasus bernama tanpa nilai terkait. Enum ini cocok untuk keadaan, arah, atau status.
<?php
enum Status {
case Active;
case Inactive;
case Banned;
}
$s = Status::Active;
echo $s->name; // "Active"Enum Berbasis Nilai
Enum berbasis nilai menetapkan nilai skalar (int atau string) untuk setiap kasus—berguna untuk penyimpanan basis data atau respons API.
<?php
enum Color: string {
case Red = "red";
case Green = "green";
case Blue = "blue";
}
echo Color::Red->value; // "red"From dan TryFrom
Konversikan nilai mentah kembali menjadi kasus enum dengan from() (melempar kesalahan jika tidak valid) atau tryFrom() (mengembalikan null jika tidak valid).
<?php
$color = Color::from("red"); // Color::Red
$maybe = Color::tryFrom("purple"); // nullEnum dalam Petunjuk Tipe
Gunakan enum sebagai petunjuk tipe untuk parameter dan tipe kembalian—PHP memastikan hanya kasus yang valid yang dapat diteruskan.
<?php
function paint(Color $color): void {
echo "Painting with ".$color->value;
}
paint(Color::Blue); // "Painting with blue"Kasus Enum dalam match
Enum bekerja sangat baik dengan ekspresi match untuk penanganan yang menyeluruh.
<?php
$label = match($status) {
Status::Active => "Active user",
Status::Inactive => "Inactive account",
Status::Banned => "Banned",
};
// PHP can warn if cases are unhandledEnum Menerapkan Interface
Enum dapat menerapkan interface, sehingga perilaku polimorfik dapat digunakan.
<?php
interface HasLabel {
public function label(): string;
}
enum Status: string implements HasLabel {
case Active = "active";
case Inactive = "inactive";
public function label(): string {
return ucfirst($this->value);
}
}Metode Enum
Enum dapat memiliki metode (tetapi tidak dapat memiliki konstruktor atau properti yang dapat diubah).
<?php
enum Suit: string {
case Hearts = "H";
case Diamonds = "D";
case Clubs = "C";
case Spades = "S";
public function color(): string {
return match($this) {
Suit::Hearts, Suit::Diamonds => "red",
Suit::Clubs, Suit::Spades => "black",
};
}
}Konstanta Enum
Enum dapat memiliki konstanta (bukan kasus) untuk nilai skalar yang terkait.
<?php
enum Direction {
case North;
case South;
const DEFAULT = self::North;
}Mencantumkan Kasus
EnumName::cases() mengembalikan array berisi semua objek kasus enum—berguna untuk membuat opsi menu tarik-turun.
<?php
$options = Color::cases();
foreach ($options as $c) {
echo $c->name.": ".$c->value."\n";
}Enum dibandingkan Konstanta Kelas
Enum memastikan keamanan tipe—Anda tidak dapat secara tidak sengaja meneruskan bilangan bulat 1 ketika yang diharapkan adalah enum Status. Konstanta kelas tidak memberikan jaminan seperti itu.
Ringkasan
Enum menyatakan kumpulan nilai tetap dengan keamanan tipe. Gunakan enum murni untuk keadaan; gunakan enum berbasis nilai ketika Anda memerlukan nilai basis data atau API. Gunakan tryFrom() untuk penguraian yang aman.
Pemeriksaan Singkat
Apa yang dikembalikan Color::tryFrom("invalid") jika tidak ada kasus yang cocok?
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Enumerasi (Enum)” gratis?
Ya — teks lengkap “Enumerasi (Enum)” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus PHP Academy, upgrade ke CoddyKit PRO. Kursus PHP Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Enumerasi (Enum)”?
Definisikan sekumpulan nilai yang aman secara tipe dengan enum backed dan murni PHP 8.1. Kamu berlatih PHP Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai PHP Academy?
Tidak diperlukan pengalaman sebelumnya. PHP Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.
Berapa lama pelajaran “Enumerasi (Enum)” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran PHP Academy ini?
Ya. Setiap pelajaran PHP Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Ekspresi Match dan Argumen Bernama
- Operator Nullsafe dan Tipe Union
- Enumerasi (Enum)
- Fiber: Konkruensi Kooperatif