国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

PHP的INSTANCEOF使用方法介紹

2024-09-04 11:43:47
字體:
來源:轉載
供稿:網友

php的instanceof是什么意思?instanceof由兩個單詞組成,instance和of,instance表示實例的意思,從字面上就可以理解這是實例引用的意思,instanceof是PHP5引入的新關鍵字.

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

1、用來確定一個變量是否屬于某個類的實例;

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

3、用來確定一個變量是否是實現了某個接口的對象的實例。

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

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

  1. if ( ! emptyempty$current_user ) ) { 
  2.  if ( $current_user instanceof WP_User ) 
  3.   return
  4.  
  5.  // Upgrade stdClass to WP_User 
  6.  if ( is_object$current_user ) && isset( $current_user->ID ) ) { 
  7.   $cur_id = $current_user->ID; 
  8.   $current_user = null; 
  9.   wp_set_current_user( $cur_id ); 
  10.   return;  //開源軟件:Vevb.com 
  11.  } 
  12.  
  13.  // $current_user has a junk value. Force to WP_User with ID 0. 
  14.  $current_user = null; 
  15.  wp_set_current_user( 0 ); 
  16.  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 引起的類名查找和致命錯誤問題.

  1. <?php 
  2. $d = 'NotMyClass'
  3. var_dump($a instanceof $d); // no fatal error here 
  4. ?> 

代碼格式:實例名 instanceof 類名

instanceof 運算符的運用

如下例子可以運行:

  1. <?php 
  2. class User{ 
  3.  private $name
  4.  public function  getName(){ 
  5.   return "UserName is ".$this->name; 
  6.  } 
  7. class NormalUser extends User { 
  8.  private $age = 99; 
  9.  public function getAge(){ 
  10.   return "age is ".$this->age; 
  11.  } 
  12. class UserAdmin{ //操作. 
  13.  public static function  getUserInfo(User $_user){ 
  14.   echo $_user->getAge(); 
  15.  } 
  16. $normalUser = new NormalUser(); 
  17. UserAdmin::getUserInfo($normalUser); 
  18. ?> 
  19. //程序運行結果: 
  20. age is 99 

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

  1. <?php 
  2. class User{ 
  3.  private $name
  4.  public function  getName(){ 
  5.   return "UserName is ".$this->name; 
  6.  } 
  7. class NormalUser extends User { 
  8.  private $age = 99; 
  9.  public function getAge(){ 
  10.   return "age is ".$this->age; 
  11.  } 
  12. class UserAdmin{ //操作. 
  13.  public static function  getUserInfo(User $_user){ 
  14.   echo $_user->getAge(); 
  15.  } 
  16. $User = new User(); // 這里new的是User. 
  17. UserAdmin::getUserInfo($User); 
  18. ?> 

程序運行結果:Fatal error:  Call to undefined method User::getAge() in E:\PHPProjects\NowaMagic\php\php_InstanceofOperator.php on line 99

使用instatnceof運算符保障代碼安全,使用instatnceof運算符,在操作前先進行類型判斷,以保障代碼的安全性.

  1. <?php 
  2. class User{ 
  3.  private $name
  4.  public function  getName(){ 
  5.   return "UserName is ".$this->name; 
  6.  } 
  7. class NormalUser extends User { 
  8.  private $age = 99; 
  9.  public function getAge(){ 
  10.   return "age is ".$this->age; 
  11.  } 
  12. class UserAdmin{ //操作. 
  13.  public static function  getUserInfo(User $_user){ 
  14.   if($_user instanceof NormalUser ){ 
  15.    echo $_user->getAge(); 
  16.   }else
  17.    echo "類型不對,不能使用這個方法."
  18.   } 
  19.  } 
  20. $User = new User(); // 這里new的是User. 
  21. UserAdmin::getUserInfo($User); 
  22. ?> 

程序運行結果:類型不對,不能使用這個方法.

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 五原县| 平武县| 泰州市| 南靖县| 石景山区| 陵川县| 万山特区| 鄂尔多斯市| 临江市| 灵寿县| 新丰县| 井陉县| 邯郸县| 元阳县| 小金县| 丰顺县| 彭州市| 临泽县| 花莲县| 镇赉县| 南部县| 宁都县| 疏勒县| 上虞市| 绩溪县| 浦城县| 龙门县| 女性| 和龙市| 文山县| 麦盖提县| 武定县| 海林市| 金坛市| 伽师县| 海安县| 吉水县| 霍邱县| 平阴县| 霍邱县| 英山县|