我有一个名为
例如,
Validator
的类,它创建了一个Validations
类的实例,其中包含所有验证方法。当进行验证时,Validator
中的__call
被用来派发调用Validator->validate_method
到Validations->method
。例如,
Validations
中有一个名为length_of
的方法。当运行以下代码时:$v = new Validator();
$v->validate_length_of(...);
在Validations
类中,length_of
验证被执行。
为了确保__call
不会尝试分派到无效或非公共的Validation
方法,我使用ReflectionMethod
来检查指定的方法:
$method = new ReflectionMethod($this->validations, $validation_method);
if (!$method->isPublic())
{
// error
}
我相信这是确定一个方法是否为公共方法的唯一方法,但我不确定在生产代码中使用反射是否合适。这是一个代码异味吗?