检查传递给方法的参数是否是类中定义的常量之一?

时间:2017-07-20 07:24:20

标签: php class oop constants type-hinting

我正在寻找一种方法来了解传递给方法的参数是否是在特定类中定义的常量。例如:

class MyClass {
    const CONSTANT = 4;
    const ANOTHER_CONSTANT = 5;

    public function aMethod ($a_CONSTANT) {
        // function code
   } 
 } 

$myClass = new MyClass();
$myClass->aMethod(MyClass::CONSTANT); // Fine
$myClass->aMethod(MyClass::ANOTHER_CONSTANT) ; // Still okay
$myClass->aMethod(4); // Not okay
$myClass->aMethod(OtherClass::VALUE); // No way

在上面的代码中,对aMethod的前两次调用是可以接受的,但我希望解析器在发生aMethod的第三次和第四次调用时发出错误,因为传递给{{1 }}不是特定类的常量(在这种情况下为aMethod)。是否有语法来键入MyClass中的参数以实现我想要的效果?

1 个答案:

答案 0 :(得分:1)

当你通过"常数"时,你自己没有传递常数,你就会传递它的值。 MyClass::CONSTANT4完全是同义词。你可以发现它们之间没有区别。事实上,编译器取代了" MyClass::CONSTANT"的所有提及。在编译时使用4。那是什么常数。