首頁  >  文章  >  後端開發  >  PHP中instanceof關鍵字是什麼?它怎麼使用?

PHP中instanceof關鍵字是什麼?它怎麼使用?

伊谢尔伦
伊谢尔伦原創
2017-06-21 16:36:401949瀏覽

instanceof關鍵字是什麼?

PHP5中新加入了instdnceof關鍵字。使用這個關鍵字可以確定一個物件是類別的實例、類別的子類,還是實作了某個特定接口,並進行對應的操作。在某些情況下,我們希望確定某個類別是否特定的類型,或者是否實作了特定的介面。 instanceof操作符非常適合完成這個任務。 instanceof操作符檢查三件事:實例是否某個特定的類型,實例是否從某個特定的類型繼承,實例或他的任何祖先類別是否實作了特定的介面。例如,假設希望了解名為manager的物件是否為類別Employee的實例:

$manager = new Employee();
…
if ($manager instanceof Employee)
  echo "Yes";

有兩點值得注意。首先,類別名稱沒有任何定界符(引號)。使用定界符將導致語法錯誤。其次,如果比較失敗,腳本將退出執行。 instanceof關鍵字在同時處理多個物件時特別有用。例如,你可能要重複地呼叫某個函數,但希望根據物件類型調整函數的行為。可以使用case語句和instanceof關鍵字來實現這個目標。

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

php中instanceof有什麼作用

作用:(1)判斷一個物件是否是某個類別的實例,(2)判斷一個物件是否實作了某個介面。

第一種用法:

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

第二用法:

<?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;;
} 
?>

輸出結果:Yes, it is

另外,要注意instanceof 與is_subclass_of() 的差別,請看程式碼:

<?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
?>

 輸出結果(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)

以上是PHP中instanceof關鍵字是什麼?它怎麼使用?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn