一起源码网

  • www.171739.xyz
  • 全球最大的互联网技术和资源下载平台
搜索
猜你喜欢
查看: 4856|回复: 1
打印 上一主题 下一主题

php类型运算符instanceof是什么?怎么使用?

[复制链接]

0

主题

0

帖子

1万

积分

钻石会员

Rank: 8Rank: 8

积分
17424
QQ
跳转到指定楼层
楼主
发表于 2020-2-26 11:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
PHP5中,通过方法传递变量的类型有不确定性,使用instanceof运算符,可以判断当前实例是否可以有这样的一个形态。当前实例使用 instanceof与当前类,父类(向上无限追溯),已经实现的接口比较时,返回真。

"instanceof"的使用非常简单,它用两个参数来完成其功能。第一个参数是你想要检查的,第二个参数是类名(事实上是一个接口名),用于确定是否这个对象是相应类的一个实例。当然,使用了上面的术语,这样就可以看到这个操作符的使用是多么直观。它的基本语法如下:

if (object instanceof class name){
 //做一些有用的事情
}

instanceof 运算符的运用

<?php
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类中因为没有这个方法而报错:

<?php
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:PHPProjectsNowaMagicphpphp_InstanceofOperator.php on line 99

使用instatnceof运算符,在操作前先进行类型判断。以保障代码的性。

<?php
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);
?>

程序运行结果:类型不对,不能使用这个方法.

分享到:  QQ好友和群QQ好友和群
收藏收藏
回复

使用道具 举报

0

主题

15

帖子

49

积分

新手上路

Rank: 1

积分
49
沙发
发表于 2022-8-29 22:56 | 只看该作者
有源码怎么编译
回复

使用道具 举报

一起源码让程序更轻更快

www.171739.xyz

工作时间 周一至周六 8:00-17:30

侵权处理

客服QQ点击咨询

关注抖音号

定期抽VIP

Copyright © 2016-2021 https://www.171739.xyz/ 滇ICP备13200218号

快速回复 返回顶部 返回列表