Php Eloquent Enumeration

时间:2014-08-26 00:34:29

标签: php enumeration

是否有人熟悉使用此库:https://github.com/eloquent/enumeration

我无法将常量的实例转换回常量值。

class TestEnum extends AbstractEnumeration
{
    const THING1 = 'test1';
    const THING2 = 'test2';
}

class DoStuff 
{
    public function action(TestEnum $test)
    {
        if($test === 'test1') {
            echo 'THIS WORKS';
        }
    }
}

$enumTest = TestEnum::THING1();
$doStuff = new DoStuff();
$doStuff->action($enumTest);

我的目标是让方法操作打印'THIS WORKS'。因为$ test是TestEnum的一个实例,所以这不会评估为true。

1 个答案:

答案 0 :(得分:2)

你很接近,但有两个问题:

  1. 案件问题。 Thing1!= THING1
  2. $test,当被视为字符串时,会计算其键THING1。您想要它的值$test->value()

  3. 实施例

    class TestEnum extends AbstractEnumeration
    {
        const THING1 = 'test1';
        const THING2 = 'test2';
    }
    
    class DoStuff
    {
        public function action(TestEnum $test)
        {
            if($test->value() === 'test1') {
                echo 'THIS WORKS';
            }
        }
    }
    
    $enumTest = TestEnum::THING1();
    $doStuff = new DoStuff();
    $doStuff->action($enumTest);
    

    输出:

    THIS WORKS