downloads | documentation | faq | getting help | mailing lists | licenses | wiki | reporting bugs | php.net sites | conferences | my php.net

search for in the

class_parents> <Fonctions SPL
[edit] Last updated: Fri, 24 May 2013

view this page in

class_implements

(PHP 5 >= 5.1.0)

class_implements Retourne les interfaces implémentées par une classe donnée

Description

array class_implements ( mixed $class [, bool $autoload = true ] )

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().

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> <Fonctions SPL
[edit] Last updated: Fri, 24 May 2013
 
add a note add a note User Contributed Notes class_implements - [4 notes]
up
1
trollll23 at yahoo dot com
7 years ago
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
    )
up
1
ludvig dot ericson at gmail dot nospam dot com
7 years ago
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.
up
1
paul at paulferrett dot com
3 years ago
You can also check if a class implements an interface using instanceof.

E.g.
<?php
if($myObj instanceof MyInterface) {
    echo
"It is! It is!";
}
?>
up
0
Anonymous
7 years ago
You can use Reflection class instead:

<?php

$r
= new ReflectionClass($class);
foreach(
$r->getInterfaces() as $in)
{
 
$in->getName();
}

 
show source | credits | sitemap | contact | advertising | mirror sites