php的instanceof和判断闭包Closure操作示例


Posted in PHP onJanuary 26, 2020

本文实例讲述了php的instanceof和判断闭包Closure。分享给大家供大家参考,具体如下:

类型运算符

instanceof 用于确定一个 PHP 变量是否属于某一类 class 的实例,在此之前用 is_a(),但是后来 is_a() 被废弃

<?php
class MyClass
{
}
class NotMyClass
{
}
$a = new MyClass;
var_dump($a instanceof MyClass);
var_dump($a instanceof NotMyClass);
?>

以上例程会输出:

bool(true)
bool(false)

instanceof 也可用来确定一个变量是不是继承自某一父类的子类的实例:

Example #2 对继承类使用 instanceof

<?php
class ParentClass
{
}
class MyClass extends ParentClass
{
}
$a = new MyClass;
var_dump($a instanceof MyClass);
var_dump($a instanceof ParentClass);
?>

以上例程会输出:

bool(true)
bool(true)

Closure 类

用于代表 匿名函数 的类.

匿名函数(在 PHP 5.3 中被引入)会产生这个类型的对象。在过去,这个类被认为是一个实现细节,但现在可以依赖它做一些事情。自 PHP 5.4 起,这个类带有一些方法,允许在匿名函数创建后对其进行更多的控制。

除了此处列出的方法,还有一个 __invoke 方法。这是为了与其他实现了 __invoke()魔术方法 的对象保持一致性,但调用匿名函数的过程与它无关。

类摘要

Closure {
/* 方法 */
__construct ( void )
public static Closure bind ( Closure $closure , object $newthis [, mixed $newscope = 'static' ] )
public Closure bindTo ( object $newthis [, mixed $newscope = 'static' ] )
}

Table of Contents

  • Closure::__construct — 用于禁止实例化的构造函数
  • Closure::bind — 复制一个闭包,绑定指定的$this对象和类作用域。
  • Closure::bindTo — 复制当前闭包对象,绑定指定的$this对象和类作用域。

判断是不是闭包

if ( $this->{$method} instanceof Closure ) {
     return call_user_func_array($this->{$method},$args);
} else {
     throw new Exception("Invalid Function");
}
//一切都要自行测试
if ( $class instanceof Closure ) {
} else {
}

参考:

http://php.net/manual/zh/language.operators.type.php

http://php.net/manual/zh/class.closure.php

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
PHP_MySQL教程-第一天
Mar 18 PHP
php sprintf()函数让你的sql操作更安全
Jul 23 PHP
超级好用的一个php上传图片类(随机名,缩略图,加水印)
Jun 30 PHP
mac下使用brew配置环境的步骤分享
May 23 PHP
php获取qq用户昵称和在线状态(实例分析)
Oct 27 PHP
php 启动报错如何解决
Jan 17 PHP
PHP中一些可以替代正则表达式函数的字符串操作函数
Nov 17 PHP
php字符比较函数similar_text、strnatcmp与strcasecmp用法分析
Nov 18 PHP
深入浅出php socket编程
May 13 PHP
PHP图像处理类库MagickWand用法实例分析
May 21 PHP
WordPress中重置文章循环的rewind_posts()函数讲解
Jan 11 PHP
解读PHP的Yii框架中请求与响应的处理流程
Mar 17 PHP
yii2.0框架场景的简单使用示例
Jan 25 #PHP
laravel框架实现为 Blade 模板引擎添加新文件扩展名操作示例
Jan 25 #PHP
laravel框架模型和数据库基础操作实例详解
Jan 25 #PHP
laravel框架分组控制器和分组路由实现方法示例
Jan 25 #PHP
laravel框架中间件简单使用方法示例
Jan 25 #PHP
php设计模式之建造器模式分析【星际争霸游戏案例】
Jan 23 #PHP
php设计模式之抽象工厂模式分析【星际争霸游戏案例】
Jan 23 #PHP
You might like
php数据库连接
2006/10/09 PHP
php获取某个目录大小的代码
2008/09/10 PHP
PHP mkdir()无写权限的问题解决方法
2014/06/19 PHP
PHP比较运算符的详细介绍
2015/09/29 PHP
php 数组字符串搜索array_search技巧
2016/07/05 PHP
thinkphp3.2中实现phpexcel导出带生成图片示例
2017/02/14 PHP
利用Laravel事件系统如何实现登录日志的记录详解
2017/05/20 PHP
PHP开启目录引索+fancyindex漂亮目录浏览带搜索功能
2019/09/23 PHP
Extjs4.0设置Ext.data.Store传参的请求方式(默认为GET)
2013/04/02 Javascript
jQuery实现公告文字左右滚动的实例代码
2013/10/29 Javascript
JS实现遮罩层效果的简单实例
2013/11/12 Javascript
jquery对单选框,多选框,文本框等常见操作小结
2014/01/08 Javascript
jQuery切换网页皮肤并保存到Cookie示例代码
2014/06/16 Javascript
js实现select跳转功能代码
2014/10/22 Javascript
调试JavaScript中正则表达式中遇到的问题
2015/01/27 Javascript
Javascript实现多彩雪花从天降散落效果的方法
2015/02/02 Javascript
使用C++为node.js写扩展模块
2015/04/22 Javascript
JS验证IP,子网掩码,网关和MAC的方法
2015/07/02 Javascript
jquery获取文档高度和窗口高度汇总
2016/01/25 Javascript
Angular2搜索和重置按钮过场动画
2017/05/24 Javascript
原生JS实现动态加载js文件并在加载成功后执行回调函数的方法
2020/12/30 Javascript
小程序实现多列选择器
2019/02/15 Javascript
vue实现记事本功能
2019/06/26 Javascript
vue npm install 安装某个指定的版本操作
2020/08/11 Javascript
Vue实现简单购物车功能
2020/12/13 Vue.js
深入浅析ImageMagick命令执行漏洞
2016/10/11 Python
利用 Monkey 命令操作屏幕快速滑动
2016/12/07 Python
keras中epoch,batch,loss,val_loss用法说明
2020/07/02 Python
python爬虫使用scrapy注意事项
2020/11/23 Python
Charles&Keith美国官方网站:新加坡快时尚鞋类和配饰零售商
2019/11/27 全球购物
班级聚会策划书
2014/01/16 职场文书
职工趣味运动会方案
2014/02/10 职场文书
会计师职业生涯规划范文
2014/02/18 职场文书
教师个人培训总结
2015/02/11 职场文书
孟佩杰观后感
2015/06/17 职场文书
公司开业致辞
2015/07/29 职场文书