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连接Oracle数据库
Oct 09 PHP
PHP数字格式化
Dec 06 PHP
PHP操作XML作为数据库的类
Dec 19 PHP
Linux下CoreSeek及PHP扩展模块的安装
Sep 23 PHP
PHP SPL使用方法和他的威力
Nov 12 PHP
PHP中执行MYSQL事务解决数据写入不完整等情况
Jan 07 PHP
Drupal7 form表单二次开发要点与实例
Mar 02 PHP
ThinkPHP CURD方法之table方法详解
Jun 18 PHP
php数组冒泡排序算法实例
May 06 PHP
PHP书写格式详解(必看)
May 23 PHP
PHP接收App端发送文件流的方法
Sep 23 PHP
PHP高并发和大流量解决方案整理
Mar 09 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使用pack处理二进制文件的方法
2014/07/03 PHP
解决Laravel无法使用COOKIE和SESSION的问题
2019/10/16 PHP
tp5框架前台无限极导航菜单类实现方法分析
2020/03/29 PHP
PHP常用header头定义代码示例汇总
2020/08/29 PHP
IE和firefox浏览器的event事件兼容性汇总
2009/12/06 Javascript
详细讲解JS节点知识
2010/01/31 Javascript
jQuery帮助之筛选查找 children([expr])
2011/01/31 Javascript
探讨javascript是不是面向对象的语言
2013/11/21 Javascript
Knockout自定义绑定创建方法
2015/12/26 Javascript
使用jQuery实现WordPress中的Ctrl+Enter和@评论回复
2016/05/21 Javascript
js 连续赋值的简单实现
2016/06/13 Javascript
原生JS实现的放大镜特效示例【测试可用】
2018/12/08 Javascript
vue 详情跳转至列表页实现列表页缓存
2019/03/27 Javascript
使用原生js编写一个简单的框选功能方法
2019/05/13 Javascript
angularjs1.X 重构controller 的方法小结
2019/08/15 Javascript
python数据处理实战(必看篇)
2017/06/11 Python
详解python OpenCV学习笔记之直方图均衡化
2018/02/08 Python
PyTorch上实现卷积神经网络CNN的方法
2018/04/28 Python
Python定义二叉树及4种遍历方法实例详解
2018/07/05 Python
Django之Mode的外键自关联和引用未定义的Model方法
2018/12/15 Python
PyQt5笔记之弹出窗口大全
2019/06/20 Python
基于python调用psutil模块过程解析
2019/12/20 Python
Python爬虫爬取百度搜索内容代码实例
2020/06/05 Python
浅析Python requests 模块
2020/10/09 Python
python中函数返回多个结果的实例方法
2020/12/16 Python
详解rem 适配布局
2018/10/31 HTML / CSS
html5 初试 indexedDB(推荐)
2016/07/21 HTML / CSS
临床医学专业个人的自我评价
2013/09/27 职场文书
食堂个人先进事迹
2014/01/22 职场文书
工地质量标语
2014/06/12 职场文书
幼儿老师求职信
2014/06/30 职场文书
文秘应届生求职信
2014/07/05 职场文书
钱学森电影观后感
2015/06/04 职场文书
2016年教师学习廉政准则心得体会
2016/01/20 职场文书
个人职业生涯规划之自我评估篇
2019/09/03 职场文书
基于Python实现射击小游戏的制作
2022/04/06 Python