ΠΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΡ ΠΏΠΎΡ ΠΎΠΆΠΈ Π½Π° ΠΊΠ»Π°ΡΡΡ ΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΡΠ΅ΠΌΠΈ ΠΆΠ΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π°ΠΌΠΈ ΠΈΠΌΡΠ½, ΡΡΠΎ ΠΈ ΠΊΠ»Π°ΡΡΡ, ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ ΠΈ ΡΡΠ΅ΠΉΡΡ. ΠΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΡ ΠΊΠ°ΠΊ ΠΈ ΠΊΠ»Π°ΡΡΡ ΡΠ°Π·ΡΠ΅ΡΠ°Π΅ΡΡΡ Π·Π°Π³ΡΡΠΆΠ°ΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ. ΠΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ Π½ΠΎΠ²ΡΠΉ ΡΠΈΠΏ Ρ ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΡΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ Π΄ΠΎΠΏΡΡΡΠΈΠΌΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ.
<?php
enum Suit
{
case Hearts;
case Diamonds;
case Clubs;
case Spades;
}
ΠΡΠΎ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΡΠΎΠ·Π΄Π°ΡΡ Π½ΠΎΠ²ΡΠΉ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»ΠΈΠΌΡΠΉ ΡΠΈΠΏ Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ Suit, Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠ΅ΡΡΡΠ΅ ΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅ΡΡΡΠ΅
Π΄ΠΎΠΏΡΡΡΠΈΠΌΡΡ
Π·Π½Π°ΡΠ΅Π½ΠΈΡ: Suit::Hearts, Suit::Diamonds,
Suit::Clubs ΠΈ Suit::Spades.
ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌ ΡΠ°Π·ΡΠ΅ΡΠ°Π΅ΡΡΡ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΈ Π΄ΠΎΠΏΡΡΡΠΈΠΌΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ.
Π ΡΡΠ½ΠΊΡΠΈΡΡ
ΡΠ°Π·ΡΠ΅ΡΠ°Π΅ΡΡΡ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΠΊΡ ΡΠΈΠΏΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠΎΠ²Π΅ΡΠΈΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ ΡΠΈΠΏΠ° Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°
ΡΠΈΠΏΡ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΡ, ΡΡΠΎΠ±Ρ Π² ΡΡΠ½ΠΊΡΠΈΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Π»ΠΈ ΡΠΎΠ»ΡΠΊΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ Π·Π°Π΄Π°Π½Π½ΠΎΠΌΡ ΡΠΈΠΏΡ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΡ.
<?php
enum Suit
{
case Hearts;
case Diamonds;
case Clubs;
case Spades;
}
function pick_a_card(Suit $suit)
{
var_dump($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');
ΠΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΡ ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ Π½ΠΎΠ»Ρ ΠΈΠ»ΠΈ Π±ΠΎΠ»ΡΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΉ case, Π±Π΅Π· ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π°.
ΠΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ Π±Π΅Π· Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ² ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ, Ρ
ΠΎΡΡ ΠΈ Π±Π΅ΡΠΏΠΎΠ»Π΅Π·Π½ΠΎ.
ΠΠ»Ρ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ² ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠ΅ ΠΆΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π° ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ°, ΡΡΠΎ ΠΈ Π΄Π»Ρ Π»ΡΠ±ΠΎΠΉ ΠΌΠ΅ΡΠΊΠΈ Π² PHP, ΡΠΌΠΎΡΡΠΈΡΠ΅ ΡΠ°Π·Π΄Π΅Π» Β«ΠΠΎΠ½ΡΡΠ°Π½ΡΡΒ».
ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π²Π°ΡΠΈΠ°Π½ΡΡ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ ΡΠΊΠ°Π»ΡΡΠ½ΡΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ, ΠΏΠΎΡΡΠΎΠΌΡ Suit::Hearts
Π½Π΅ ΡΠ°Π²Π½ΠΎ "0". ΠΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ ΠΊΠ°ΠΆΠ΄ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ ΠΎΠ΄Π½ΠΎΡΠ»Π΅ΠΌΠ΅Π½ΡΠ½ΡΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ Ρ ΡΠ°ΠΊΠΈΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ.
ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ:
<?php
enum Suit
{
case Hearts;
case Diamonds;
case Clubs;
case Spades;
}
$a = Suit::Spades;
$b = Suit::Spades;
if ($a === $b) {
print "ΠΠ°ΡΡΠΈ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡ ΠΏΠΎ ===\n";
}
if ($a instanceof Suit) {
print "ΠΠ°ΡΡΠΈ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡ ΠΏΠΎ instanceof\n";
}
if ($a !== 'Spades') {
print "ΠΠ°ΡΡΡ Π½Π΅ ΡΠΎΠ²ΠΏΠ°Π΄Π°Π΅Ρ ΡΠΎ ΡΡΡΠΎΠΊΠΎΠΉ\n";
}
ΠΡΠΎ ΡΠ°ΠΊΠΆΠ΅ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΡ Π½Π΅ Π±ΡΠ΄ΡΡ < ΠΈΠ»ΠΈ >
Π΄ΡΡΠ³ Ρ Π΄ΡΡΠ³Π°, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΡΠΈ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Π½Π΅ ΠΈΠΌΠ΅ΡΡ ΡΠΌΡΡΠ»Π° Π΄Π»Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ².
Π‘ΡΠ°Π²Π½Π΅Π½ΠΈΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π· Π±ΡΠ΄ΡΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ false ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ Π²Π°ΡΠΈΠ°Π½ΡΠ°ΠΌΠΈ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΡ.
Π’ΠΈΠΏ Π²Π°ΡΠΈΠ°Π½ΡΠ° Π±Π΅Π· ΡΠ²ΡΠ·Π°Π½Π½ΡΡ Π΄Π°Π½Π½ΡΡ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ Β«Π§ΠΈΡΡΡΠΉ Π²Π°ΡΠΈΠ°Π½ΡΒ» (Π°Π½Π³Π». Pure Case). ΠΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΈΡΡΡΠ΅ Π²Π°ΡΠΈΠ°Π½ΡΡ, Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΡΠΈΡΡΡΠΌ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ΠΌ (Π°Π½Π³Π». Pure Enum).
ΠΠ°ΠΆΠ΄ΡΠΉ ΡΠΈΡΡΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΡΡΡ ΠΊΠ°ΠΊ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΡΠ²ΠΎΠ΅Π³ΠΎ ΡΠΈΠΏΠ° ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΡ. Π’ΠΈΠΏ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΡ Π²Π½ΡΡΡΠ΅Π½Π½Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ ΠΊΠ°ΠΊ ΠΊΠ»Π°ΡΡ.
ΠΠ°ΠΆΠ΄ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π΄ΠΎΡΡΡΠΏΠ½ΠΎΠ΅ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ name β
ΡΡΠ²ΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΠΊ ΡΠ΅Π³ΠΈΡΡΡΡ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΡΠ°ΠΌΠΎΠ³ΠΎ Π²Π°ΡΠΈΠ°Π½ΡΠ°.
<?php
enum Suit
{
case Hearts;
case Diamonds;
case Clubs;
case Spades;
}
print Suit::Spades->name;
// ΠΡΠ²ΠΎΠ΄: "Spades"Π‘ΠΎΠ΄Π΅ΡΠΆΠΈΡΡΡ Π»ΠΈ Π²Π°ΡΠΈΠ°Π½Ρ Π² ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΠΏΠΎ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠΌΡ Π½Π°Π·Π²Π°Π½ΠΈΡ Π²Π°ΡΠΈΠ°Π½ΡΠ°, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π² ΡΡΠ½ΠΊΡΠΈΡ defined(), Π° ΡΡΠΈΡΡΠ²Π°ΡΡ Π²Π°ΡΠΈΠ°Π½Ρ ΠΏΠΎ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠΌΡ ΠΈΠΌΠ΅Π½ΠΈ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ constant(), Π½ΠΎ Π΄Π΅Π»Π°ΡΡ ΡΠ°ΠΊ Π½Π΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π² Π±ΠΎΠ»ΡΡΠ΅ΠΉ ΡΠ°ΡΡΠΈ ΡΡΠ΅Π½Π°ΡΠΈΠ΅Π² ΡΠ°Π±ΠΎΡΡ Ρ Π²Π°ΡΠΈΠ°Π½ΡΠ°ΠΌΠΈ ΡΠΏΡΠ°Π²Π»ΡΡΡΡΡ ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΡ.