
正文
PHP面向对象:instanceof 运算符
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
http://www.nowamagic.net/php/php_InstanceofOperator.php
在PHP5中,通过方法传递变量的类型有不确定性。于是我们很难判断,一些操作是否可以运行。
使用instanceof运算符,可以判断当前实例是否可以有这样的一个形态。当前实例使用 instanceof与当前类,父类(向上无限追溯),已经实现的接口比较时,返回真。
代码格式:实例名 instanceof 类名
instanceof 运算符的运用
如下例子可以运行。
01
|
<?
|
02
|
class
User{
|
03
|
private
$name
;
|
04
|
public
function
getName(){
|
05
|
return
"UserName is "
.
$this
->name;
|
06
|
}
|
07
|
}
|
08
|
09
|
class
NormalUser
extends
User {
|
10
|
private
$age
= 99;
|
11
|
public
function
getAge(){
|
12
|
return
"age is "
.
$this
->age;
|
13
|
}
|
14
|
}
|
15
|
16
|
class
UserAdmin{
//操作.
|
17
|
public
static
function
getUserInfo(User
$_user
){
|
18
|
echo
$_user
->getAge();
|
19
|
}
|
20
|
}
|
21
|
$normalUser
=
new
NormalUser();
|
22
|
UserAdmin::getUserInfo(
$normalUser
);
|
23
|
?>
|
程序运行结果:
1
|
age is 99
|
在User类中因为没有这个方法而报错:
01
|
<?
|
02
|
class
User{
|
03
|
private
$name
;
|
04
|
public
function
getName(){
|
05
|
return
"UserName is "
.
$this
->name;
|
06
|
}
|
07
|
}
|
08
|
09
|
class
NormalUser
extends
User {
|
10
|
private
$age
= 99;
|
11
|
public
function
getAge(){
|
12
|
return
"age is "
.
$this
->age;
|
13
|
}
|
14
|
}
|
15
|
16
|
class
UserAdmin{
//操作.
|
17
|
public
static
function
getUserInfo(User
$_user
){
|
18
|
echo
$_user
->getAge();
|
19
|
}
|
20
|
}
|
21
|
$User
=
new
User();
// 这里new的是User.
|
22
|
UserAdmin::getUserInfo(
$User
);
|
23
|
?>
|
程序运行结果:
1
|
Fatal error: Call to undefined method User::getAge() in E:\PHPProjects\NowaMagic\php\php_InstanceofOperator.php on line 99
|
使用instatnceof运算符保障代码安全
使用instatnceof运算符,在操作前先进行类型判断。以保障代码的安全性。
view source
print?
01
|
<?
|
02
|
class
User{
|
03
|
private
$name
;
|
04
|
public
function
getName(){
|
05
|
return
"UserName is "
.
$this
->name;
|
06
|
}
|
07
|
}
|
08
|
09
|
class
NormalUser
extends
User {
|
10
|
private
$age
= 99;
|
11
|
public
function
getAge(){
|
12
|
return
"age is "
.
$this
->age;
|
13
|
}
|
14
|
}
|
15
|
16
|
class
UserAdmin{
//操作.
|
17
|
public
static
function
getUserInfo(User
$_user
){
|
18
|
if
(
$_user
instanceof NormalUser ){
|
19
|
echo
$_user
->getAge();
|
20
|
}
else
{
|
21
|
echo
"类型不对,不能使用这个方法."
;
|
22
|
}
|
23
|
}
|
24
|
}
|
25
|
$User
=
new
User();
// 这里new的是User.
|
26
|
UserAdmin::getUserInfo(
$User
);
|
27
|
?>
|
程序运行结果:
1
|
类型不对,不能使用这个方法.
|






