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: ...
随机推荐
- 回顾Servlet及SpringMVC
什么是Servlet? Servlet是运行在Web服务器或应用服务器上的程序,它是作为来自Web浏览器或其他HTTP客户端的请求和HTTP服务器上的数据库 或应用程序之间的中间层. servlet架 ...
- 数据流:DataOutputStream与DataInputStream的使用
看这两个类的名字就不难猜测出它们的类关系图. DataOutputStream: 主要是一些writeXxx()操作,写出, 相当于序列化 DataInputStream: 主要是一些readXxx( ...
- php strncmp()函数 语法
php strncmp()函数 语法 作用:比较字符串前n个字符,区分大小写 语法:strncmp(string1,string2,length)直线电机品牌 参数: 参数 描述 string1 必须 ...
- PHPthink 配置目录
系统默认的配置文件目录就是应用目录(APP_PATH),也就是默认的application下面,并分为应用配置(整个应用有效)和模块配置(仅针对该模块有效). ├─application 应用目录 │ ...
- 【bzoj1185】[HNOI2007]最小矩形覆盖 (旋转卡壳)
给你一些点,让你用最小的矩形覆盖这些点 首先有一个结论,矩形的一条边一定在凸包上!!! 枚举凸包上的边 用旋转卡壳在凸包上找矩形另外三点... 注意精度问题 #include<cstdio> ...
- PHP常用
php.ini文件配置 时间配置PRC中国 date.timezone = PRC 文件上传file_uploads = On //支持http上传upload_tmp_dir = //临时文件保存路 ...
- HTML- 锚点实例
<!DOCTYPE HTML> <html> <head> <meta charset='utf-8'> <title>锚点实例</t ...
- 数组中重复的数字(js实现)
题目 在一个长度为n的数组里的所有数字都在0到n-1的范围内. 数组中某些数字是重复的,但不知道有几个数字是重复的.也不知道每个数字重复几次.请找出数组中任意一个重复的数字. 例如,如果输入长度为7的 ...
- mysql for Mac 下创建数据表中文显示为?的解决方法
在我的绝版Mac mini下安装了mysql 5.7版本,实例中,在通过load data 导入数据时发现表中的中文显示为 ? 通过百度,发现多个版本的解决方法,将其中一个成功解决的方法贴上来: 大 ...
- 插件化框架解读之android系统服务实现原理(五)
阿里P7移动互联网架构师进阶视频(每日更新中)免费学习请点击:https://space.bilibili.com/474380680 一.系统服务提供方式 1.我们平时最常见的系统服务使用方式 Wi ...