Heim > Backend-Entwicklung > PHP-Problem > PHP-Instanz, was bedeutet das?

PHP-Instanz, was bedeutet das?

藏色散人
Freigeben: 2023-03-09 17:18:02
Original
5299 Leute haben es durchsucht

php „instanceof“ ist ein Schlüsselwort in PHP. Mit dem Schlüsselwort „instanceof“ können Sie feststellen, ob ein Objekt eine Instanz einer Klasse oder eine Unterklasse einer Klasse ist oder eine bestimmte Schnittstelle implementiert, und entsprechende Operationen ausführen.

PHP-Instanz, was bedeutet das?

Die Betriebsumgebung dieses Artikels: Windows 7-System, PHP-Version 5.6, Dell G3-Computer.

Eine weitere neue Ergänzung zu PHP5 ist das Schlüsselwort instdnceof. Verwenden Sie dieses Schlüsselwort, um zu bestimmen, ob ein Objekt eine Instanz einer Klasse oder eine Unterklasse einer Klasse ist oder eine bestimmte Schnittstelle implementiert, und entsprechende Vorgänge auszuführen. In manchen Fällen möchten wir feststellen, ob eine Klasse von einem bestimmten Typ ist oder eine bestimmte Schnittstelle implementiert. Der Instanzoperator ist für diese Aufgabe sehr gut geeignet. Der Operator „instanceof“ prüft drei Dinge: ob die Instanz von einem bestimmten Typ ist, ob die Instanz von einem bestimmten Typ erbt und ob die Instanz oder eine ihrer Vorgängerklassen eine bestimmte Schnittstelle implementiert. Angenommen, Sie möchten wissen, ob ein Objekt mit dem Namen manager eine Instanz der Klasse Employee ist:

$manager = new Employee();
…
if ($manager instanceof Employee)
  echo "Yes";
Nach dem Login kopieren

Da gibt es zwei Punkte, die es zu beachten gilt. Erstens enthält der Klassenname keine Trennzeichen (Anführungszeichen). Die Verwendung von Trennzeichen führt zu einem Syntaxfehler. Zweitens: Wenn der Vergleich fehlschlägt, beendet das Skript die Ausführung. Das Schlüsselwort „instanceof“ ist besonders nützlich, wenn Sie mit mehreren Objekten gleichzeitig arbeiten. Beispielsweise könnten Sie eine Funktion wiederholt aufrufen, möchten aber das Verhalten der Funktion basierend auf dem Objekttyp anpassen. Sie können case-Anweisungen und das Schlüsselwort „instanceof“ verwenden, um dieses Ziel zu erreichen.

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
Nach dem Login kopieren

Was ist die Funktion von „instanceof“ in PHP?

Funktion: (1) Bestimmen, ob ein Objekt eine Instanz einer bestimmten Klasse ist, (2) Bestimmen, ob ein Objekt eine bestimmte Schnittstelle implementiert.

Erste Verwendung:

<?php
$obj = new A();
if ($obj instanceof A) {
  echo &#39;A&#39;;
}
Nach dem Login kopieren

Zweite Verwendung:

<?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;;
} 
?>
Nach dem Login kopieren

Ausgabeergebnis: Ja, das ist

Achten Sie außerdem auf den Unterschied zwischen Instanz von und is_subclass_of (), siehe 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
?>
Nach dem Login kopieren

Ausgabeergebnis (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)
Nach dem Login kopieren

Empfohlenes Lernen: „PHP-Video-Tutorial

Das obige ist der detaillierte Inhalt vonPHP-Instanz, was bedeutet das?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage