You can use Reflection class instead:
<?php
$r = new ReflectionClass($class);
foreach($r->getInterfaces() as $in)
{
$in->getName();
}
class_implements
(PHP 5 >= 5.1.0)
class_implements — Return the interfaces which are implemented by the given class
설명
This function returns an array with the names of the interfaces that the given class and its parents implement.
인수
- class
-
An object (class instance) or a string (class name).
- autoload
-
Whether to allow this function to load the class automatically through the __autoload magic method. Defaults to TRUE.
반환값
An array on success, or FALSE on error.
변경점
| 버전 | 설명 |
|---|---|
| 5.1.0 | Added the option to pass the class parameter as a string. Added the autoload parameter. |
예제
Example #1 class_implements() example
<?php
interface foo { }
class bar implements foo {}
print_r(class_implements(new bar));
// since PHP 5.1.0 you may also specify the parameter as a string
print_r(class_implements('bar'));
function __autoload($class_name) {
require_once $class_name . '.php';
}
// use __autoload to load the 'not_loaded' class
print_r(class_implements('not_loaded', true));
?>
위 예제의 출력 예시:
Array
(
[foo] => foo
)
Array
(
[interface_of_not_loaded] => interface_of_not_loaded
)
참고
- class_parents() - Return the parent classes of the given class
- get_declared_interfaces() - 선언된 모든 인터페이스의 배열을 반환
class_implements
24-Jan-2006 05:51
trollll23 at yahoo dot com
25-Oct-2005 07:57
25-Oct-2005 07:57
Luckily, it prints out superinterfaces as well in reverse order so iterative searching works fine:
<?php
interface InterfaceA { }
interface InterfaceB extends InterfaceA { }
class MyClass implements InterfaceB { }
print_r(class_implements(new MyClass()));
?>
prints out:
Array
(
[InterfaceB] => InterfaceB
[InterfaceA] => InterfaceA
)
ludvig dot ericson at gmail dot nospam dot com
01-Aug-2005 07:41
01-Aug-2005 07:41
Hint:
<?php
in_array("your-interface", class_implements($object_or_class_name));
?>
would check if 'your-interface' is ONE of the implemented interfaces.
Note that you can use something similar to be sure the class only implements that, (whyever you would want that?)
<?php
array("your-interface") == class_implements($object_or_class_name);
?>
I use the first technique to check if a module has the correct interface implemented, or else it throws an exception.
