2009-12-03 5 views

Répondre

7

Vous devez utiliser instanceof.

Notez que implements est incorrect. instanceof doit être utilisé dans les deux cas (vérifier si un objet est une classe héritée ou si l'objet implémente une interface).

Exemple de manuel:

<?php 
interface MyInterface 
{ 
} 

class MyClass implements MyInterface 
{ 
} 

$a = new MyClass; 

var_dump($a instanceof MyClass); 
var_dump($a instanceof MyInterface); 
?> 

donne:

bool(true) 
bool(true) 
+0

Oui, je sais. Je ne sais pas ce que je pensais. Tard la nuit ici;) – Franz

+0

Ha ha ... J'allais commenter, mais au moment où je me suis soumis soumettre moi-même, vous l'aviez déjà réparé. :RÉ – zombat

2

Oui, vous pouvez utiliser

if ($foo instanceof ClassName) 
    // do stuff... 

EDIT: Pour autant que je sache, cela ne devrait même travailler pour les interfaces ...

+0

Oubliez les trucs de l'équipement. Je le perdais;) – Franz

+0

Y a-t-il un moyen de ne pas construire l'objet? –

+0

Oui, vous pouvez utiliser 'class_parents()' pour cela: http://de2.php.net/manual/de/function.class-parents.php – Franz

1

Puis-je recommendons le instanceof operator?

class A { } 
class B extends A { } 
class C { } 

$b = new B; 
$c = new C; 

var_dump($b instanceof A, $c instanceof A) // bool(true), bool(false) 
Questions connexes