С точки зрения производительности я должен выбрать:Отражение :: hasMethod против method_exists производительность
$className = 'Foobar';
$methodName = 'method';
Это
$Reflected = new ReflectionClass($className);
$result = $Reflected->hasMethod($methodName);
над
$result = method_exists($className,$method);
А почему?
Для этого случая я не использую никаких других свойств или методов ReflectionClass.
Отражение всегда медленнее, чем некоторый собственный метод PHP для проверки того, определен ли метод. Не уверен, насколько это плохо в PHP, но в Java-отражении медленнее, чем ад ... И вы всегда можете сделать некоторую собственную отладку ... Сделайте две петли из 10000 повторений, в которых в первом цикле измеряют время для отражения и внутри во-вторых, измерьте время для 'method_exists' ... Затем сравните, и вы закончите ... – shadyyx
Почему вы не просто измеряете, что быстрее? – Jon
Для однократной проверки это избыток, используя ReflectionClass. Используйте его, когда вы делаете сложную проверку класса –