다른 언어에서는 메서드 파라미터에 Enum의 static 변수 만 넘길 수 있도록 처리 할 수 있는데
PHP 에서 제공되는 SplEnum 의 경우 아래와 같이 객체를 생성해서 넘기도록 되어있습니다.
<?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.
혹시 다른분들은 이러한 처리를 어떻게 하고 계신지 궁금합니다.
제가 일단 하고싶었던 방식은 아래와 같습니다.
<?php
class Fruit
{
const APPLE = 1;
const ORANGE = 2;
}
eat(Fruit::APPLE);
다른 언어에서는 메서드 파라미터에 Enum의 static 변수 만 넘길 수 있도록 처리 할 수 있는데
PHP 에서 제공되는 SplEnum 의 경우 아래와 같이 객체를 생성해서 넘기도록 되어있습니다.
혹시 다른분들은 이러한 처리를 어떻게 하고 계신지 궁금합니다.
제가 일단 하고싶었던 방식은 아래와 같습니다.
위와 같이 작성이 가능하면서 타입힌트가 가능하도록 하고 싶습니다.