国产探花免费观看_亚洲丰满少妇自慰呻吟_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的用法.

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 台州市| 龙泉市| 水富县| 上高县| 永修县| 安远县| 璧山县| 宜川县| 新野县| 偏关县| 外汇| 嘉祥县| 垣曲县| 临清市| 信阳市| 涟源市| 日土县| 新乡市| 安吉县| 文登市| 如皋市| 北票市| 恭城| 静宁县| 茶陵县| 花莲市| 古田县| 丹阳市| 安福县| 玉田县| 石柱| 淮北市| 吕梁市| 仙居县| 合肥市| 新疆| 庆云县| 公安县| 奇台县| 罗田县| 南部县|