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 相关文章推荐
复杂检索数据并分页显示的处理方法
Oct 09 PHP
第十一节--重载
Nov 16 PHP
PHP下escape解码函数的实现方法
Aug 08 PHP
php导出csv数据在浏览器中输出提供下载或保存到文件的示例
Apr 24 PHP
PHP判断远程图片是否存在的几种方法
May 04 PHP
PHP写日志的实现方法
Nov 05 PHP
Yii的CDbCriteria查询条件用法实例
Dec 04 PHP
php自动载入类用法实例分析
Jun 24 PHP
Yii2 RESTful中api的使用及开发实例详解
Jul 06 PHP
PHP新特性之字节码缓存和内置服务器
Aug 11 PHP
PHP 计算两个特别大的整数实例代码
May 07 PHP
实例讲解PHP中使用命名空间
Jan 27 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操作数组的一些函数整理介绍
2011/07/17 PHP
深入apache host的配置详解
2013/06/09 PHP
php 使用curl模拟ip和来源进行访问的实现方法
2017/05/02 PHP
js实现iframe动态调整高度的代码
2008/01/06 Javascript
jQuery 注意事项 与原因分析
2009/04/24 Javascript
Jquery 扩展方法
2010/05/06 Javascript
本人自用的global.js库源码分享
2015/02/28 Javascript
jQuery处理json数据返回数组和输出的方法
2015/03/11 Javascript
快速掌握Node.js中setTimeout和setInterval的使用方法
2016/03/21 Javascript
使用vue制作FullPage页面滚动效果
2017/08/21 Javascript
微信小程序switch组件使用详解
2018/01/31 Javascript
Vue全局分页组件的实现代码
2018/08/10 Javascript
Vue在 Nuxt.js 中重定向 404 页面的方法
2019/04/23 Javascript
解决vue打包后vendor.js文件过大问题
2019/07/03 Javascript
js实现旋转木马轮播图效果
2020/01/10 Javascript
用Angular实现一个扫雷的游戏示例
2020/05/15 Javascript
[36:14]DOTA2上海特级锦标赛D组小组赛#1 EG VS COL第二局
2016/02/28 DOTA
python的id()函数介绍
2013/02/10 Python
Python守护进程(daemon)代码实例
2015/03/06 Python
Flask框架Flask-Principal基本用法实例分析
2018/07/23 Python
Pycharm以root权限运行脚本的方法
2019/01/19 Python
Python3实现的简单工资管理系统示例
2019/03/12 Python
Python解析命令行读取参数之argparse模块
2019/07/26 Python
tensorflow 大于某个值为1,小于为0的实例
2020/06/30 Python
莫斯科珠宝厂官方网站:Miuz
2020/09/19 全球购物
网络教育毕业生自我鉴定
2013/10/10 职场文书
师范学院教师自荐书
2014/01/31 职场文书
小学一年级评语大全
2014/04/22 职场文书
不服从公司安排检讨书
2014/09/24 职场文书
2015年宣传工作总结
2015/04/08 职场文书
科技馆观后感
2015/06/08 职场文书
pytest配置文件pytest.ini的详细使用
2021/04/17 Python
MySql学习笔记之事务隔离级别详解
2021/05/12 MySQL
如何自己动手写SQL执行引擎
2021/06/02 MySQL
如何使用Tkinter进行窗口的管理与设置
2021/06/30 Python
索尼ICF-36收音机评测
2022/04/30 无线电