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 — Retourne les interfaces implémentées par une classe donnée
Description
Cette fonction retourne un tableau avec les noms des interfaces que la classe class ainsi que ses parents implémentent.
Liste de paramètres
- class
-
Un objet (instance) ou une chaîne de caractères (nom de la classe).
- autoload
-
Si TRUE, autorise cette fonction à charger la classe automatiquement grâce à la méthode magique __autoload. Par défaut, l'argument vaut TRUE.
Valeurs de retour
Retourne un tableau ou FALSE en cas d'erreur.
Historique
| Version | Description |
|---|---|
| 5.1.0 | Ajout de l'option pour passer le paramètre class en tant que chaîne de caractères. Ajout du paramètre autoload . |
Exemples
Exemple #1 Exemple avec class_implements()
<?php
interface foo { }
class bar implements foo {}
print_r(class_implements(new bar));
// Depuis PHP 5.1.0, vous pouvez aussi spécifier le paramètre comme une chaîne de caractères
print_r(class_implements('bar'));
function __autoload($class_name) {
require_once $class_name . '.php';
}
// Utilisez __autoload pour charger la classe 'non_chargée'
print_r(class_implements('non_chargée', true));
?>
L'exemple ci-dessus va afficher quelque chose de similaire à :
Array
(
[foo] => foo
)
Array
(
[interface_de_non_chargée] => interface_de_non_chargée
)
Voir aussi
- class_parents() - Retourne la classe parente d'une classe
- get_declared_interfaces() - Retourne un tableau avec toutes les interfaces déclarées
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.
