目前我正在尝试为我们的模板设计人员创建一个帮助程序类,它具有最少的PHP知识,所以我想尽可能简化它。
在这个过程中,我偶然发现了一个我以前从未真正考虑过的问题:
如何检查方法调用的参数是否是已定义类常量的值?
我可以想出几种使用反射等方法来做到这一点的方法,但我想知道是否有一些方法更加简单,我忽略了。
参加以下课程:
class Foo{
const TYPE_A = 'A';
const TYPE_B = 'B';
const TYPE_C = 'C';
public static function doSomething($type){
//Check to see if $type is indeed a class constant
}
}
//This would work
Foo::doSomething(Foo::TYPE_A);
Foo::doSomething(Foo::TYPE_B);
Foo::doSomething(Foo::TYPE_C);
Foo::doSomething('A');
Foo::doSomething('B');
Foo::doSomething('C');
//This should fail
Foo::doSomething('BAR');
除了使用反射之外,我可以使用私有数组等,但这确实会破坏常量的目的,或者需要在几个地方更新数据。
答案 0 :(得分:0)
没有反思或自定义黑客似乎不可能,所以我关闭了这个
答案 1 :(得分:-1)
您可以检查是否使用http://php.net/manual/en/function.defined.php
定义常量 public static function doSomething($type){
if (defined('self::' . $type)) {
// do someting
}
}