Quel est le mot-clé instanceof ?
Le mot-clé instdnceof est nouvellement ajouté dans PHP5. Utilisez ce mot-clé pour déterminer si un objet est une instance d'une classe, une sous-classe d'une classe, ou implémente une interface spécifique, et effectuez les opérations correspondantes. Dans certains cas, nous souhaitons déterminer si une classe est d'un type spécifique ou implémente une interface spécifique. L'instanceofopérateur est parfait pour cette tâche. L'opérateur instanceof vérifie trois choses : si l'instance est d'un type spécifique, si l'instance hérite d'un type spécifique et si l'instance ou l'une de ses classes ancêtres implémente une interface spécifique. Par exemple, supposons que vous souhaitiez savoir si un objet nommé manager est une instance de la classe Employee :
$manager = new Employee(); … if ($manager instanceof Employee) echo "Yes";
Il y a deux points à noter. Premièrement, le nom de la classe ne comporte aucun délimiteur (guillemets). L'utilisation de délimiteurs entraînera une erreur de syntaxe . Deuxièmement, si la comparaison échoue, le script sortira de l'exécution. Le mot-clé instanceof est particulièrement utile lorsque vous travaillez avec plusieurs objets en même temps. Par exemple, vous pouvez appeler une fonction à plusieurs reprises mais souhaitez ajuster le comportement de la fonction en fonction du type d'objet. Vous pouvez utiliser des instructions case et le mot-clé instanceof pour atteindre cet objectif.
class test{} class test{} class testChilern Extends test{} $a = new test(); $m = new test(); $i = ($m instanceof test); if($i) echo '$m是类test的实例!<br />'; // get this value switch ($a instanceof test){ case true : echo 'YES<br />'; break; case false : echo 'No<br />'; //get this value break; } $d=new testChilern(); if($d instanceof test)echo '$d是类test的子类!<br />'; // get this value
Quelle est la fonction d'instanceof en php
Fonction : (1) Déterminer si un objet est une instance d'un certaine classe, ( 2) Déterminer si un objet implémente une certaine interface.
Première utilisation :
<?php $obj = new A(); if ($obj instanceof A) { echo 'A'; }
Deuxième utilisation :
<?php interface ExampleInterface { public function interfaceMethod(); } class ExampleClass implements ExampleInterface { public function interfaceMethod() { return 'Hello World!'; } } $exampleInstance = new ExampleClass(); if($exampleInstance instanceof ExampleInterface){ echo 'Yes, it is'; }else{ echo 'No, it is not'; } ?>
Résultat de sortie : Oui, c'est
De plus, veuillez noter la différence entre instanceof et is_subclass_of(), veuillez consulter le code :
<?php class Foo { public $foobar = 'Foo'; public function test() { echo $this->foobar . "\n"; } } class Bar extends Foo { public $foobar = 'Bar'; } $a = new Foo(); $b = new Bar(); echo "use of test() method\n"; $a->test(); $b->test(); echo "instanceof Foo\n"; var_dump($a instanceof Foo); // TRUE var_dump($b instanceof Foo); // TRUE echo "instanceof Bar\n"; var_dump($a instanceof Bar); // FALSE var_dump($b instanceof Bar); // TRUE echo "subclass of Foo\n"; var_dump(is_subclass_of($a, 'Foo')); // FALSE var_dump(is_subclass_of($b, 'Foo')); // TRUE echo "subclass of Bar\n"; var_dump(is_subclass_of($a, 'Bar')); // FALSE var_dump(is_subclass_of($b, 'Bar')); // FALSE ?>
Résultat de sortie (PHP 5.4.4) :
use of test() method Foo Bar instanceof Foo bool(true) bool(true) instanceof Bar bool(false) bool(true) subclass of Foo bool(false) bool(true) subclass of Bar bool(false)
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!