php instanceof

 instanceof函数是php5中新添的面向对象的函数。他主要的作用是 检测一个给定的对象是否属于(继承于)某个类(class)、某个类的子类、某个接口(interface)。如果是则返回true。反之返回false;

举例:

<?php 

class baseClass {} 

class subClass extends baseClass{}  

interface aInterface {} 

class aClass implements aInterface {}  

$a = new baseClass(); 

var_dump( ($a instanceof baseClass)); 

$b = new subClass(); 

var_dump( ($b instanceof baseClass)); 

$c = new aClass(); 

var_dump( ($c instanceof aInterface)); 

var_dump( ($c instanceof subClass)); 

?>  

结果为

bool(true)

bool(true)

bool(true)

bool(false)

它其实就是检测对象与类的从属关系。

       


转载于:https://my.oschina.net/guomingliang/blog/208921

### PHP 中 `instanceof` 操作符的取反操作 在 PHP 中,`instanceof` 是一个用于对象是否为某个其子实例的操作符。如果需要对 `instanceof` 的结果进行取反操作,可以使用逻辑非运算符 `!`。以下是一个示例代码: ```php <?php class MyClass { } $a = new MyClass; // 判断 $a 是否不是 stdClass 的实例 if (!($a instanceof stdClass)) { echo '$a 不是 stdClass 的实例'; } else { echo '$a 是 stdClass 的实例'; } ?> ``` 上述代码中,`!($a instanceof stdClass)` 表示判断 `$a` 是否不是 `stdClass` 的实例[^2]。 此外,当涉及到继承关系时,`instanceof` 也会考虑继承层次结构。例如: ```php <?php class ParentClass { } class MyClass extends ParentClass { } $a = new MyClass; var_dump(!($a instanceof MyClass)); // 输出 bool(false) var_dump(!($a instanceof ParentClass)); // 输出 bool(false) ?> ``` 在这个例子中,`$a` 是 `MyClass` 的实例,同时也是 `ParentClass` 的实例,因此 `!($a instanceof MyClass)` 和 `!($a instanceof ParentClass)` 都返回 `false`[^3]。 ### 注意事项 - `instanceof` 操作符不仅对象是否为指定的实例,还会查其父和实现的接口。 - 使用 `!` 对 `instanceof` 取反时,逻辑表达式需要用括号括起来,以确保优先级正确。 ### 示例代码 以下是一个完整的示例,展示了如何在不同情况下使用 `!` 和 `instanceof`: ```php <?php class ParentClass { } class MyClass extends ParentClass { } class AnotherClass { } $a = new MyClass; if (!($a instanceof AnotherClass)) { echo '$a 不是 AnotherClass 的实例' . PHP_EOL; } if (!($a instanceof ParentClass)) { echo '$a 不是 ParentClass 的实例' . PHP_EOL; } else { echo '$a 是 ParentClass 的实例' . PHP_EOL; } ?> ``` ### 输出结果 ``` $a 不是 AnotherClass 的实例 $a 是 ParentClass 的实例 ``` 以上代码展示了如何正确地对 `instanceof` 的结果进行取反操作,并结合继承关系进行判断[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值