首頁 後端開發 PHP問題 php instanceof 什麼意思

php instanceof 什麼意思

May 14, 2021 am 09:07 AM
instanceof

php instanceof是php中的一個關鍵字,使用instanceof關鍵字可以確定一個物件是類別的實例、類別的子類,還是實作了某個特定接口,並進行對應的操作。

php instanceof 什麼意思

本文操作環境:Windows7系統、PHP5.6版、Dell G3電腦。

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影片教學

以上是php instanceof 什麼意思的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

instanceof有什麼作用 instanceof有什麼作用 Nov 14, 2023 pm 03:50 PM

instanceof的作用是判斷一個物件是否是某個類別的實例,或者是否實作了某個介面。 instanceof是一個用來檢查物件是否為指定類型的運算子。 instanceof運算子使用場景:1、類型檢查:可以用來判斷一個物件的具體類型,以便根據不同類型執行不同的邏輯;2、介面判斷:可以用來判斷一個物件是否實現了某個接口,以便根據介面的定義呼叫對應的方法;3、向下轉型等等。

java中instanceof運算子怎麼使用 java中instanceof運算子怎麼使用 May 19, 2023 am 08:16 AM

概念1、此運算子用於操作物件的例子,檢查物件是否為特定類型(類型或介面類型)。格式2、如果計算器左側變數所指的對像是操作器右側類別或介面的對象,則結果是真實的。 (Objectreferencevariable)instanceof(class/interfacetype)實例packagecom.verify_instanceof;publicclassTestInstanceOf{publicstaticvoidmain(String[]args){//下方四行程式碼用來證明:instanceof

instanceof是什麼意思 instanceof是什麼意思 Nov 20, 2023 pm 02:32 PM

instanceof是JavaScript 中的一個操作符,用於檢測構造函數的”prototype“屬性是否出現在對象的原型鏈中的任何位置,語法為”object instanceof constructor“,其中object是要檢測的對象,constructor是要進行檢查的構造函數。

java中instanceof是什麼意思 java中instanceof是什麼意思 Nov 13, 2023 pm 01:52 PM

在Java中,instanceof是一個二元運算符,用於檢查一個物件是否是一個類別的實例,或者是一個類別的子類別的實例,其語法形式為“object instanceof class”,其中,object是一個對象引用,class是一個類別名稱或介面名稱。

為什麼不加instanceof會報錯 為什麼不加instanceof會報錯 Nov 13, 2023 pm 03:05 PM

原因是: instanceof運算子用來檢查一個物件是否是某個特定類別(或其衍生類別)的實例。如果物件不是一個類別的實例,那麼就無法進行類型判斷,因此會拋出錯誤。為了避免這種錯誤,在使用instanceof運算子時,需要確保物件是一個類別的實例。如果不確定物件的類型,可以使用其他方式進行類型判斷。

instanceof後為什麼要強轉 instanceof後為什麼要強轉 Nov 14, 2023 pm 03:43 PM

在使用instanceof運算子檢查物件的類型時,如果結果為true,表示物件是指定類型的實例。但是,編譯器並不會自動將物件轉換為指定類型,因此需要進行強制類型轉換。強制類型轉換是將一個物件從一種類型轉換為另一種類型的操作。在使用instanceof運算子後,如果確定物件是指定類型的實例,並且希望以該類型進行操作,就需要進行強制類型轉換。

為什麼不用instanceof 為什麼不用instanceof Nov 14, 2023 pm 04:05 PM

不用instanceof的原因有:1、正在使用的程式語言可能不支援instanceof運算符,;2、認為使用其他方法可以更好地實現需求,在某些情況下,使用其他方法來檢查物件類型可能更有效或更適合你的需求;3、不熟悉instanceof運算子的使用方式或不確定它的行為;4、在某些情況下,使用"instanceof" 可能不是最佳的選擇。

在Java中的instanceof運算符 在Java中的instanceof運算符 Sep 01, 2023 pm 08:01 PM

此運算符僅用於物件引用變數。此運算符檢查物件是否屬於特定類型(類別類型或介面類型)。 instanceof運算子寫為-(Objectreferencevariable)instanceof(class/interfacetype)如果運算子左側變數所引用的物件通過了右側類別/介面類型的IS-A檢查,則結果將為true。以下是一個範例-範例 現場示範publicclassTest{  publicstaticvoidmain(Stringargs[]){&nbs

See all articles