【发布时间】:2017-12-25 18:09:51
【问题描述】:
我正在寻找一种方法来了解传递给方法的参数是否是在特定类中定义的常量。例如:
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 时给出错误,因为传递给aMethod 的值不是常量特定类的(MyClass,在这种情况下)。是否有语法来输入aMethod 中的参数以实现我想要的?
【问题讨论】:
-
没有。您需要根据这些常量手动检查传递的值。常量只是一个值的容器。当你将一个常量传递给一个方法时,它只是被传递的值。该类不知道,也不应该知道该值来自外部范围。一切以实际价值为准。
标签: php class oop constants type-hinting