ๅๆๅใฏใฏใฉในใซไผผใฆใใพใใใ ใฏใฉในใใคใณใฟใผใใงใคในใใใฌใคใใจๅๅ็ฉบ้ใๅ ฑๆใใพใใ ๅๆๅใฏใชใผใใญใผใใฃใณใฐใๅฏ่ฝใงใใ ๅๆๅใฏๆฐใใๅใๅฎ็พฉใใพใใใ ๅบๅฎใฎใ้ใใใๆฐใฎๆๅนใชๅคใๆใกใพใใ
<?php
enum Suit
{
case Hearts;
case Diamonds;
case Clubs;
case Spades;
}
?>
ไธ่จใฎๅฎฃ่จใซใใฃใฆใๆฐใใๅๆๅ
Suit
ใไฝใใใพใใใ
ใใใๆใคๆๅนใชๅคใฏ4ใคใ ใใงใใ
Suit::Hearts
ใSuit::Diamonds
ใSuit::Clubs
ใใใใฆ Suit::Spades
ใงใใ
ใใใใฎๆๅนใชๅคใฎใใกใใฒใจใคใ ใใๅคๆฐใซไปฃๅ
ฅใงใใพใใ
้ขๆฐใฏๅๆๅใซๅฏพใใๅใใงใใฏใ่กใใพใใใ
ใใฎๅ ดๅใฏๅๆๅใฎๅคใ ใใๆธกใใพใใ
<?php
function pick_a_card(Suit $suit)
{
/* ... */
}
$val = Suit::Diamonds;
// OK
pick_a_card($val);
// OK
pick_a_card(Suit::Clubs);
// TypeError: pick_a_card(): Argument #1 ($suit) must be of type Suit, string given
pick_a_card('Spades');
?>
ๅๆๅใฏใ0ๅไปฅไธใฎ
case
ใๅฎ็พฉใงใใพใใ
case
ใๅฎ็พฉใใๆฐใซไธ้ใฏใใใพใใใ
case ใ0ๅใฎๅๆๅใๆๆณ็ใซใฏๆๅนใงใใใๅฝนใซ็ซใกใพใใใ
ๅๆๅใฎ case ใฏใPHP ใฎใฉใใซใจๅใ่ฆๅใซๅพใใพใใ ๅฎๆฐ ใฎใใผใธใๅ็ งใใ ใใใ
ใใใฉใซใใงใฏใcase ใฏๆฌ่ณช็ใซในใซใฉใผใฎๅคใซไพๅญใใฆใใพใใใ
ใคใพใใSuit::Hearts
ใฏ "0"
ใซ็ญใใใชใใจใใใใจใงใใ
ใใใใใใใใใฎ case ใฏใใฎๅๅใไปใใใทใณใฐใซใใณใชใใธใงใฏใใงใใ
ไปฅไธใฎใณใผใใใใใ็คบใใฆใใพใ:
<?php
$a = Suit::Spades;
$b = Suit::Spades;
$a === $b; // true
$a instanceof Suit; // true
?>
ใใฎใใจใฏใๅๆๅใฎๅคใฏๆฑบใใฆ
<
ใ >
ใงๆฏ่ผใงใใชใใใจใๆๅณใใฆใใพใใ
ใชใใชใใใใใใฎๆฏ่ผใใชใใธใงใฏใใง่กใฃใฆใ็กๆๅณใ ใใใงใใ
ๅๆๅใฎๅคใไฝฟใฃใฆใใใใฎๆฏ่ผใ่กใฃใฆใใๅธธใซ false
ใ่ฟใใพใใ
้ข้ฃใใใใผใฟใฎใชใใใใใใใฟใคใใฎ case ใใ "Pure Case" ใจๅผใณใพใใ Pure Case ใฎใฟใๅซใๅๆๅใใ"Pure Enum" ใจๅผใณใพใใ
ๅ จใฆใฎ Pure Case ใฏใใใฎๅๆๅใฎใคใณในใฟใณในใจใใฆๅฎ่ฃ ใใใฆใใพใใ ๅๆๅใฏๅ ้จ็ใซใฏใฉในใจใใฆ่กจ็พใใใพใใ
ๅ
จใฆใฎ case ใฏ่ชญใฟๅใๅฐ็จใฎใใญใใใฃ
name
ใๆใกใพใใ
ใใใฏๅคงๆๅญๅฐๆๅญใๅบๅฅใใใใcase ใใฎใใฎใฎๅๅใงใใ
<?php
print Suit::Spades->name;
// "Spades" ใจ่กจ็คบ
?>
ๅๆๅใฎๅๅใๅ็ใซๅๅพใใฆใใๅ ดๅใ case ใฎๅญๅจใ็ขบ่ชใใใใ่ชญใฟๅใ็จ้ใจใใฆ defined() ใ constant() ้ขๆฐใไฝฟใใพใใ ใใใใชใใใใใใใฎ้ขๆฐใฎๅฉ็จใฏใใใใใงใใพใใใ ใชใใชใใ Backed Enum ใงๅคงๅใฎ็จ้ใๆบใใใใฏใใ ใใใงใใ