PHP的INSTANCEOF使用方法介紹

2021-07-24 16:45:53 字數 1923 閱讀 9789

instanceof 運算子是 php 5 引進的。在此之前用 is_a(),但是 is_a() 已經過時了,最好用 instanceof。

1、用來確定乙個變數是否屬於某個類的例項;

2、用來確定乙個變數是否是繼承自某一父類的子類的例項;

3、用來確定乙個變數是否是實現了某個介面的物件的例項。

在 php 5.1.0之前,如果要檢查的類名稱不存在,instanceof 會呼叫 __autoload()。另外,如果該類沒有被裝載則會產生乙個致命錯誤。可以通過使用動態類引用(dynamic class reference)或用乙個包含類名的字串變數來避開這種問題:

下面舉例說明php instanceof的用法:

if ( ! empty( $current_user ) )

// $current_user has a junk value. force to wp_user with id 0.

$current_user = null;

wp_set_current_user( 0 );

return false; }

如**中高亮的部分,if ( $current_user instanceof wp_user ),wp_user是乙個類名,在這裡這句話是判斷$current_user是否是wp_user這個類的例項。也就是判斷前面的**中是否已經有$current_user=new wp_user()。

使用instanceof這個關鍵字可以確定乙個物件是類的例項、類的子類,還是實現了某個特定介面,並進行相應的操作。

example #6 避免 php 5.0 中 instanceof 引起的類名查詢和致命錯誤問題

<?php

$d = 'notmyclass';

var_dump($a instanceof $d); // no fatal error here

?>

**格式:例項名 instanceof 類名

instanceof 運算子的運用

如下例子可以執行。

<?

class user }

class normaluser extends user }

class useradmin }

$normaluser = new normaluser();

useradmin::getuserinfo($normaluser);

?>

程式執行結果:

age is 99

在user類中因為沒有這個方法而報錯:

<?

class user }

class normaluser extends user }

class useradmin }

$user = new user(); // 這裡new的是user.

useradmin::getuserinfo($user);

?>

程式執行結果:

fatal error:  call to undefined method user::getage() in e:\phpprojects\nowamagic\php\php_instanceofoperator.php on line 99

使用instatnceof運算子保障**安全

使用instatnceof運算子,在操作前先進行型別判斷。以保障**的安全性。

<?

class user }

class normaluser extends user }

class useradminelse }

}$user = new user(); // 這裡new的是user.

useradmin::getuserinfo($user);

?>

程式執行結果:

型別不對,不能使用這個方法.

這就是php關鍵字instanceof的用法。

php中instanceof的使用

instanceof函式是php5中新添的物件導向的函式。他主要的作用是檢測乙個給定的物件是否屬於 繼承於 某個類 class 某個類的子類 某個介面 inte ce 如果是則返回true。反之返回false 看下面的 你就了解他的意思了。class baseclass class subclass...

php中instanceof的作用

instanceof可以判斷某個物件是否是某個類的例項。這是官方的定義 instanceof 用於確定乙個 php 變數是否屬於某一類 class 的例項 直接上 1 判斷乙個物件是否是某個類的例項 class myclass class notmyclass a new myclass var d...

php 中 instanceof的使用方式

摘自 instanceof的作用 1.判斷某個物件是否是某個類的例項 舉例說明 class a obj new a if obj instanceof a else2.判斷乙個物件是否是實現了末個介面 舉例說明 inte ce exampleinte ce class exampleclass im...