PHP Doku:: Return the interfaces which are implemented by the given class - function.class-implements.html

Verlauf / Chronik / History: (1) anzeigen

Sie sind hier:
Doku-StartseitePHP-HandbuchFunktionsreferenzSonstige GrunderweiterungenStandard PHP Library (SPL)SPL Funktionenclass_implements

Ein Service von Reinhard Neidl - Webprogrammierung.

SPL Funktionen

<<SPL Funktionen

class_parents>>

class_implements

(PHP 5 >= 5.1.0)

class_implements Return the interfaces which are implemented by the given class

Beschreibung

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

This function returns an array with the names of the interfaces that the given class and its parents implement.

Parameter-Liste

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.

Rückgabewerte

An array on success, or FALSE on error.

Changelog

Version Beschreibung
5.1.0 Added the option to pass the class parameter as a string. Added the autoload parameter.

Beispiele

Beispiel #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));

?>

Das oben gezeigte Beispiel erzeugt eine ähnliche Ausgabe wie:

Array
(
    [foo] => foo
)

Array
(
    [interface_of_not_loaded] => interface_of_not_loaded
)

Siehe auch


4 BenutzerBeiträge:
- Beiträge aktualisieren...
paul at paulferrett dot com
31.12.2009 2:35
You can also check if a class implements an interface using instanceof.

E.g.
<?php
if($myObj instanceof MyInterface) {
    echo
"It is! It is!";
}
?>

24.01.2006 18:51
You can use Reflection class instead:

<?php

$r
= new ReflectionClass($class);
foreach(
$r->getInterfaces() as $in)
{
 
$in->getName();
}
trollll23 at yahoo dot com
25.10.2005 21: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
1.08.2005 21: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.



PHP Powered Diese Seite bei php.net
The PHP manual text and comments are covered by the Creative Commons Attribution 3.0 License © the PHP Documentation Group - Impressum - mail("TO:Reinhard Neidl",...)