SunshinePHP Developer Conference 2015

La clase SplEnum

(PECL spl_types >= 0.1.0)

Introducción

SplEnum proporciona la capacidad para emular y crear nativamente en PHP objetos de enumeración.

Sinopsis de la Clase

SplEnum extends SplType {
/* Constantes */
const NULL __default = null ;
/* Métodos */
public array getConstList ([ bool $include_default = false ] )
/* Métodos heredados */
SplType::__construct ([ mixed $initial_value [, bool $strict ]] )
}

Constantes predefinidas

SplEnum::__default

Ejemplos

Ejemplo #1 Ejemplo de uso de SplEnum

<?php
class Month extends SplEnum {
    const 
__default self::Enero;
    
    const 
Enero 1;
    const 
Febrero 2;
    const 
Marzo 3;
    const 
Abril 4;
    const 
Mayo 5;
    const 
Junio 6;
    const 
Julio 7;
    const 
Agosto 8;
    const 
Septiembre 9;
    const 
Octubre 10;
    const 
Noviembre 11;
    const 
Diciembre 12;
}

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

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

El resultado del ejemplo sería:

6
El valor no es un const en la enumeración de la clase Month

Tabla de contenidos

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