是否有人熟悉使用此库: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。
答案 0 :(得分:2)
你很接近,但有两个问题:
Thing1
!= THING1
$test
,当被视为字符串时,会计算其键THING1
。您想要它的值$test->value()
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