You dont need Reflection for this. You can simply use
class_implements
— Return the interfaces which are implemented by the given class
Usage
in_array('InterfaceName', class_implements('className'));
Example 1 - Echo all classes implementing the Iterator Interface
foreach (get_declared_classes() as $className) {
if (in_array('Iterator', class_implements($className))) {
echo $className, PHP_EOL;
}
}
Example 2 - Return array of all classes implementing the Iterator Interface
print_r(
array_filter(
get_declared_classes(),
function ($className) {
return in_array('Iterator', class_implements($className));
}
)
);
The second example requires PHP5.3 due to the callback being an anonymous function.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…