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