Maison >développement back-end >tutoriel php >Quel est le mot-clé instanceof en PHP ? Comment l'utiliser ?

Quel est le mot-clé instanceof en PHP ? Comment l'utiliser ?

伊谢尔伦
伊谢尔伦original
2017-06-21 16:36:401968parcourir

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 &#39;$m是类test的实例!<br />&#39;; // get this value
switch ($a instanceof test){
  case true :
    echo &#39;YES<br />&#39;;
    break;
  case false :
    echo &#39;No<br />&#39;; //get this value
    break;
}
$d=new testChilern();
if($d instanceof test)echo &#39;$d是类test的子类!<br />&#39;; // 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 &#39;A&#39;;
}

Deuxième utilisation :

<?php
interface ExampleInterface
{
   public function interfaceMethod();
 }
 class ExampleClass implements ExampleInterface
{
   public function interfaceMethod()
   {
     return &#39;Hello World!&#39;;
   }
 }
$exampleInstance = new ExampleClass();
 if($exampleInstance instanceof ExampleInterface){
   echo &#39;Yes, it is&#39;;
 }else{
   echo &#39;No, it is not&#39;;
} 
?>

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 = &#39;Foo&#39;;
   public function test() {
     echo $this->foobar . "\n";
   }
 }
 class Bar extends Foo {
   public $foobar = &#39;Bar&#39;;
 }
$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, &#39;Foo&#39;)); // FALSE
var_dump(is_subclass_of($b, &#39;Foo&#39;)); // TRUE
echo "subclass of Bar\n";
var_dump(is_subclass_of($a, &#39;Bar&#39;)); // FALSE
var_dump(is_subclass_of($b, &#39;Bar&#39;)); // 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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn