У меня есть класс Validator
, который создает экземпляр класса Validations
, который содержит все методы проверки.Когда проверка выполняется, __call
в Validator
используется для отправки вызова от Validator->validate_<i>method</i>
до Validations-><i>method</i>
.
Так, например, в Validations
есть метод, называемый length_of
.Когда выполняется следующий код:
$v = new Validator();
$v->validate_length_of(...);
выполняется проверка length_of
в классе Validations
.
Чтобы убедиться, что __call
не пытается отправитьдля недопустимого или закрытого метода Validation
я использую ReflectionMethod
для проверки указанного метода:
$method = new ReflectionMethod($this->validations, $validation_method);
if (!$method->isPublic())
{
// error
}
Я почти уверен, что это единственный способ определить, является ли методpublic, но я не уверен, что Reflection подходит для использования в рабочем коде.Это запах кода?