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 应用程序的安全 -- 不能违反的四条安全规则
Nov 26 PHP
PHP实现多服务器session共享之NFS共享的方法
Mar 16 PHP
PHPLog php 程序调试追踪工具
Sep 09 PHP
一个基于PDO的数据库操作类(新) 一个PDO事务实例
Jul 03 PHP
第三章 php操作符与控制结构代码
Dec 30 PHP
PHP中SESSION使用中的一点经验总结
Mar 30 PHP
PHP SPL标准库之文件操作(SplFileInfo和SplFileObject)实例
May 11 PHP
JavaScript与HTML结合的基本使用方法整理
Oct 12 PHP
PHP如何将XML转成数组
Apr 04 PHP
php实现头像上传预览功能
Apr 27 PHP
thinkphp5 migrate数据库迁移工具
Feb 20 PHP
Yii2框架实现登陆添加验证码功能示例
Jul 12 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
Windows Apache2.2.11及Php5.2.9-1的安装与配置方法
2009/06/08 PHP
ThinkPHP CURD方法之page方法详解
2014/06/18 PHP
php表单敏感字符过滤类
2014/12/08 PHP
PHP列出MySQL中所有数据库的方法
2015/03/12 PHP
thinkPHP框架中执行事务的方法示例
2018/05/31 PHP
对Jquery中的ajax再封装,简化操作示例
2014/02/12 Javascript
jQuery学习笔记之jQuery.fn.init()的参数分析
2014/06/09 Javascript
深入探讨JavaScript String对象
2015/03/09 Javascript
jquery中的工具使用方法$.isFunction, $.isArray(), $.isWindow()
2015/08/09 Javascript
JS基于MSClass和setInterval实现ajax定时采集信息并滚动显示的方法
2016/04/18 Javascript
用jQuery.ajaxSetup实现对请求和响应数据的过滤
2016/12/20 Javascript
js实现数组去重方法及效率?Ρ? target=
2017/02/14 Javascript
纯js实现的积木(div层)拖动功能示例
2017/07/19 Javascript
聊聊那些使用前端Javascript实现的机器学习类库
2017/09/18 Javascript
Vue的实例、生命周期与Vue脚手架(vue-cli)实例详解
2017/12/27 Javascript
vue动态绑定class的几种常用方式小结
2019/05/21 Javascript
小程序和web画三角形实现解析
2019/09/02 Javascript
深入学习Vue nextTick的用法及原理
2019/10/08 Javascript
Vue+Element-UI实现上传图片并压缩
2019/11/26 Javascript
[50:04]DOTA2上海特级锦标赛D组小组赛#2 Liquid VS VP第二局
2016/02/28 DOTA
[02:03]永远的信仰DOTA2 中国军团历届国际邀请赛回顾
2016/06/26 DOTA
python在命令行下使用google翻译(带语音)
2014/01/16 Python
centos系统升级python 2.7.3
2014/07/03 Python
Python中使用第三方库xlrd来读取Excel示例
2015/04/05 Python
Python脚本实现虾米网签到功能
2016/04/12 Python
Python3之文件读写操作的实例讲解
2018/01/23 Python
python2 与 pyhton3的输入语句写法小结
2018/09/10 Python
python里dict变成list实例方法
2019/06/26 Python
Python matplotlib学习笔记之坐标轴范围
2019/06/28 Python
pybind11在Windows下的使用教程
2019/07/04 Python
Matplotlib 绘制饼图解决文字重叠的方法
2020/07/24 Python
HTML5 Canvas 实现圆形进度条并显示数字百分比效果示例
2017/08/18 HTML / CSS
俄罗斯汽车零件和配件在线商店:CarvilleShop
2019/11/29 全球购物
SQL中where和having的区别
2012/06/17 面试题
大学生村官工作感言
2014/01/10 职场文书
2015年社区服务活动总结
2015/03/25 职场文书