Was ist das Schlüsselwort „instanceof“?
Das Schlüsselwort instdnceof wurde in PHP5 neu hinzugefügt. Verwenden Sie dieses Schlüsselwort, um zu bestimmen, ob ein -Objekt eine Instanz einer Klasse, 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 Instanzenoperator ist perfekt für diese Aufgabe. Der Instanzoperator 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";
Es gibt 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 '$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
Welche Funktion hat die Instanz von in PHP?
Funktion: (1) Bestimmen Sie, ob ein Objekt eine Instanz von a ist bestimmte Klasse, (2) Bestimmen Sie, ob ein Objekt eine bestimmte Schnittstelle implementiert.
Erste Verwendung:
<?php $obj = new A(); if ($obj instanceof A) { echo 'A'; }
Zweite Verwendung:
<?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'; } ?>
Ausgabeergebnis: Ja, es ist
Beachten Sie außerdem den Unterschied zwischen „instanceof“ und „is_subclass_of()“ (siehe 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 ?>
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)
Das obige ist der detaillierte Inhalt vonWas ist das Schlüsselwort „instanceof' in PHP? Wie benutzt man es?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!