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; |
16 |
class UserAdmin{ //操作. |
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; |
16 |
class UserAdmin{ //操作. |
17 |
public static function getUserInfo(User $_user ){ |
18 |
echo $_user ->getAge(); |
21 |
$User = new User(); // 这里new的是User. |
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; |
16 |
class UserAdmin{ //操作. |
17 |
public static function getUserInfo(User $_user ){ |
18 |
if ( $_user instanceof NormalUser ){ |
19 |
echo $_user ->getAge(); |
21 |
echo "类型不对,不能使用这个方法." ; |
25 |
$User = new User(); // 这里new的是User. |
26 |
UserAdmin::getUserInfo( $User ); |
程序运行结果:
- JavaScript instanceof 运算符深入剖析
简介: 随着 web 的发展,越来越多的产品功能都放在前端进行实现,增强用户体验.而前端开发的主要语言则是 JavaScript.学好 JavaScript 对开发前端应用已经越来越重要.在开发复杂产 ...
- tips instanceof运算符和typeof运算符的区别
tips instanceof运算符和typeof运算符的区别 一.instanceof运算符: 此运算符可以判断一个变量是否是某个对象(类)的实例,返回值是布尔类型的(true和fal ...
- JavaScript instanceof 运算符深入剖析【转载】
http://www.ibm.com/developerworks/cn/web/1306_jiangjj_jsinstanceof/ instanceof 运算符简介 在 JavaScript ...
- java抽象类,接口(接口定义,实现接口,instanceof运算符,对象转换)
抽象类 在面向对象的概念中,所有的对象都是通过类来表述的,但并不是所有的类都能够完整的描绘对象,如果一个类中没有包含足够的信息来描绘一类具体的对象,这样的类就是抽象类.抽象类往往用来表征对问题领域进行 ...
- instanceof 运算符
java中的instanceof=======>二元运算符 用法: result = object instanceof class 参数: result 是boolean类型 object 是 ...
- instanceof运算符
instanceof运算符:判断该对象是否是某一个类的实例. 语法格式:boolean b = 对象A instanceof 类B://判断A对象是否是B类的实例,如果是返回true. 若对象是类的实 ...
- Object.prototype 与 Function.prototype 与 instanceof 运算符
方法: hasOwnProperty isPrototypeOf propertyIsEnumerable hasOwnProperty 该方法用来判断一个对象中的某一个属性是否是自己提供的( 住要用 ...
- JavaScript原型链和instanceof运算符的暧昧关系
时间回到两个月前,简单地理了理原型链.prototype以及__proto__之间的乱七八糟的关系,同时也简单了解了下typeof和instanceof两个运算符,但是,anyway,试试以下两题: ...
- js的in运算符与instanceof运算符
in运算符:希望他的左操作数是一个字符串或可以转换为字符串,希望他的右操作数是一个对象.如果右操作数的对象拥有一个名为左操作数值的属性名,那么表达式返回true. var point= {x:1,y: ...
随机推荐
- CF 717A Festival Organization——斯特林数+递推求通项+扩域
题目:http://codeforces.com/contest/717/problem/A 是 BJOI2019 勘破神机 的弱化版. 令 \( g[i] \) 表示长为 i .以 1 结尾的方案数 ...
- JS知识—面试准备(一)
1.JS内置类型 分为基本数据类型和Object.基本数据类型有:null,undefined,string,boolean,number,symbol. console.log(typeof nul ...
- (转)超详细java中的ClassLoader详解
转:https://blog.csdn.net/briblue/article/details/54973413 ClassLoader翻译过来就是类加载器,普通的java开发者其实用到的不多,但对于 ...
- 高并发大流量专题---3、前端优化(减少HTTP请求次数)
高并发大流量专题---3.前端优化(减少HTTP请求次数) 一.总结 一句话总结: 图片地图:使用<map><area></area></map>标签. ...
- 使用Docker快速部署Gitlab
使用Docker部署Gitlab 1. 下载gitlab镜像 docker pull gitlab/gitlab-ce 2. 运行gitlab实例 GITLAB_HOME=`pwd`/data/git ...
- sqlserver数据库里怎样设置datetime类型的小数位数为3位
要用datetime2(7)这种类型!将7改为3就行了
- 用shell脚本实现MongoDB数据库自动备份
一.创建MongoDB备份目录 用来存放数据 mkdir -p /data/mongodb_bak/mongodb_bak_now mkdir -p /data/mongodb_bak/mongodb ...
- 微众银行c++选择题后记
一个类的成员可以有:另一个类的对象,类的自身指针,自身类对象的引用(私有的如何初始化呢,所以不行,换成静态的可以),自身类对象(构造时如何初始化呢?) class A{ public: A(){} A ...
- 平衡二叉搜索树AVL
package com.sunshine.AlgorithmTemplate; import com.sunshine.OFFER66_SECOND.BalanceTreeNode; import c ...
- <每日一题>题目4:for循环套生成器的面试题
题目: def add(n,i): return n+i def test(): for i in range(4): yield i g = test() for n in [1,10,5]: g ...