您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

PHP的INSTANCEOF使用方法介绍

2024/5/13 3:36:27发布34次查看
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的用法:
if ( ! empty( $current_user ) ) {
 if ( $current_user instanceof wp_user )
  return;
// upgrade stdclass to wp_user
 if ( is_object( $current_user ) && isset( $current_user->id ) ) {
  $cur_id = $current_user->id;
  $current_user = null;
  wp_set_current_user( $cur_id );
  return;
 }
// $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 引起的类名查找和致命错误问题
代码格式:实例名 instanceof 类名
instanceof 运算符的运用
如下例子可以运行。
class user{
 private $name;
 public function  getname(){
  return username is .$this->name;
 }
}
class normaluser extends user {
 private $age = 99;
 public function getage(){
  return age is .$this->age;
 }
}
class useradmin{ //操作.
 public static function  getuserinfo(user $_user){
  echo $_user->getage();
 }
}
$normaluser = new normaluser();
useradmin::getuserinfo($normaluser);
?>
程序运行结果:
age is 99
在user类中因为没有这个方法而报错:
class user{
 private $name;
 public function  getname(){
  return username is .$this->name;
 }
}
class normaluser extends user {
 private $age = 99;
 public function getage(){
  return age is .$this->age;
 }
}
class useradmin{ //操作.
 public static function  getuserinfo(user $_user){
  echo $_user->getage();
 }
}
$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{
 private $name;
 public function  getname(){
  return username is .$this->name;
 }
}
class normaluser extends user {
 private $age = 99;
 public function getage(){
  return age is .$this->age;
 }
}
class useradmin{ //操作.
 public static function  getuserinfo(user $_user){
  if($_user instanceof normaluser ){
   echo $_user->getage();
  }else{
   echo 类型不对,不能使用这个方法.;
  }
 }
}
$user = new user(); // 这里new的是user.
useradmin::getuserinfo($user);
?>
程序运行结果:
类型不对,不能使用这个方法.
这就是php关键字instanceof的用法。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product