ConFoo: Call for paper is now Open

The SplEnum class

(PECL spl_types >= 0.1.0)

Einführung

SplEnum gives the ability to emulate and create enumeration objects natively in PHP.

Klassenbeschreibung

SplEnum extends SplType {
/* Constants */
const NULL __default = null ;
/* Methoden */
public array getConstList ([ bool $include_default = false ] )
/* Geerbte Methoden */
SplType::__construct ([ mixed $initial_value [, bool $strict ]] )
}

Vordefinierte Konstanten

SplEnum::__default

Beispiele

Beispiel #1 SplEnum usage example

<?php
class Month extends SplEnum {
    const 
__default self::January;
    
    const 
January 1;
    const 
February 2;
    const 
March 3;
    const 
April 4;
    const 
May 5;
    const 
June 6;
    const 
July 7;
    const 
August 8;
    const 
September 9;
    const 
October 10;
    const 
November 11;
    const 
December 12;
}

echo new 
Month(Month::June) . PHP_EOL;

try {
    new 
Month(13);
} catch (
UnexpectedValueException $uve) {
    echo 
$uve->getMessage() . PHP_EOL;
}
?>

Das oben gezeigte Beispiel erzeugt folgende Ausgabe:

6
Value not a const in enum Month

Inhaltsverzeichnis

add a note add a note

User Contributed Notes 1 note

up
6
No Such Alias
4 years ago
Here's a clearer example usage in case anyone else finds the
current documentation confusing (as I did).

<?php
class Fruit extends SplEnum
{
 
// If no value is given during object construction this value is used
 
const __default = 1;
 
// Our enum values
 
const APPLE     = 1;
  const
ORANGE    = 2;
}

$myApple   = new Fruit();
$myOrange  = new Fruit(Fruit::ORANGE);
$fail      = 1;

function
eat(Fruit $aFruit)
{
  if (
Fruit::APPLE == $aFruit) {
    echo
"Eating an apple.\n";
  } elseif (
Fruit::ORANGE == $aFruit) {
    echo
"Eating an orange.\n";
  }
}

eat($myApple);  // Eating an apple.
eat($myOrange); // Eating an orange.

eat($fail); // PHP Catchable fatal error:  Argument 1 passed to eat() must be an instance of Fruit, integer given

?>
To Top