http://www.nowamagic.net/php/php_InstanceofOperator.php
在PHP5中,通过方法传递变量的类型有不确定性。于是我们很难判断,一些操作是否可以运行。
使用instanceof运算符,可以判断当前实例是否可以有这样的一个形态。当前实例使用 instanceof与当前类,父类(向上无限追溯),已经实现的接口比较时,返回真。
代码格式:实例名 instanceof 类名
instanceof 运算符的运用
如下例子可以运行。
04 |
public function getName(){ |
05 |
return "UserName is " . $this ->name; |
09 |
class NormalUser extends User { |
11 |
public function getAge(){ |
12 |
return "age is " . $this ->age; |
17 |
public static function getUserInfo(User $_user ){ |
18 |
echo $_user ->getAge(); |
21 |
$normalUser = new NormalUser(); |
22 |
UserAdmin::getUserInfo( $normalUser ); |
程序运行结果:
在User类中因为没有这个方法而报错:
04 |
public function getName(){ |
05 |
return "UserName is " . $this ->name; |
09 |
class NormalUser extends User { |
11 |
public function getAge(){ |
12 |
return "age is " . $this ->age; |
17 |
public static function getUserInfo(User $_user ){ |
18 |
echo $_user ->getAge(); |
22 |
UserAdmin::getUserInfo( $User ); |
程序运行结果:
1 |
Fatal error: Call to undefined method User::getAge() in E:\PHPProjects\NowaMagic\php\php_InstanceofOperator.php on line 99 |
使用instatnceof运算符保障代码安全
使用instatnceof运算符,在操作前先进行类型判断。以保障代码的安全性。
04 |
public function getName(){ |
05 |
return "UserName is " . $this ->name; |
09 |
class NormalUser extends User { |
11 |
public function getAge(){ |
12 |
return "age is " . $this ->age; |
17 |
public static function getUserInfo(User $_user ){ |
18 |
if ( $_user instanceof NormalUser ){ |
19 |
echo $_user ->getAge(); |
21 |
echo "类型不对,不能使用这个方法." ; |
26 |
UserAdmin::getUserInfo( $User ); |
程序运行结果: