SPL Types
在线手册:中文  英文

The SplEnum class

(PECL spl_types >= 0.1.0)

简介

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

类摘要

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

预定义常量

SplEnum::__default

范例

Example #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;
}
?>

以上例程会输出:

6
Value not a const in enum Month

Table of Contents


SPL Types
在线手册:中文  英文

用户评论:

No Such Alias (2010-07-30 09:11:37)

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

?>

易百教程