php-instanceof运算符

1、关于 instanceof 的一些基本概念

1)、instanceof 用于确定一个PHP变量是否属于某一类class的实例:

<?php
class MyClass
{
}

class NotMyClass
{
}
$a = new MyClass;

var_dump($a instanceof MyClass);
var_dump($a instanceof NotMyClass);
?>

输出结果:

bool(true)
bool(false)

2)、instanceof 也用来确定一个变量是不是继承自某一父类的子类的实例:

<?php
class ParentClass
{
}

class MyClass extends ParentClass
{
}

$a = new MyClass;

var_dump($a instanceof MyClass);
var_dump($a instanceof ParentClass);
?>


输出结果

bool(true)
bool(true)

3)、instanceof 用于确定一个变量是不是实现了某个接口的对象的实例:

<?php
interface MyInterface
{
}

class MyClass implements MyInterface
{
}

$a = new MyClass;

var_dump($a instanceof MyClass);
var_dump($a instanceof MyInterface);
?>

输出:

bool(true)
bool(true)



2、使用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){
		if($_user instanceof NormalUser ){
			echo $_user->getAge();
		}else{
			echo "类型不对,不能使用这个方法.";
		}
	}
}
$User = new User(); // 这里new的是User.
UserAdmin::getUserInfo($User);
?>

输出:

类型不对,不能使用这个方法.



原文引用及推荐:

详解PHP中instanceof关键字及instanceof关键字有什么作用

php instanceof操作符

php中instanceof 与 is_a()区别分析

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值