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实现jQuery扩展函数
Oct 30 PHP
php阻止页面后退的方法分享
Feb 17 PHP
PHP四大安全策略
Mar 12 PHP
ThinkPHP实现二级循环读取的方法
Nov 03 PHP
php判断输入是否是纯数字,英文,汉字的方法
Mar 05 PHP
php实现的日历程序
Jun 18 PHP
PHP批量去除BOM头代码分享
Jun 26 PHP
PHP实现事件机制实例分析
Jun 26 PHP
ThinkPHP安装和设置
Jul 27 PHP
PHP最常用的正则表达式
Feb 13 PHP
php判断文件上传图片格式的实例详解
Sep 30 PHP
PHP fprintf()函数用法讲解
Feb 16 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
解决163/sohu/sina不能够收到PHP MAIL函数发出邮件的问题
2009/03/13 PHP
iis下php mail函数的sendmail配置方法(官方推荐)
2012/04/25 PHP
php之Memcache学习笔记
2013/06/17 PHP
PHP正则提取不包含指定网址的图片地址的例子
2014/04/21 PHP
获取Javscript执行函数名称的方法
2006/12/22 Javascript
js 连接数据库如何操作数据库中的数据
2012/11/23 Javascript
用JavaScript实现动画效果的方法
2013/07/20 Javascript
一个简单的jQuery插件ajaxfileupload.js实现ajax上传文件例子
2014/06/26 Javascript
jQuery的bind()方法使用详解
2015/07/15 Javascript
JavaScript实现页面跳转的几种常用方式
2015/11/28 Javascript
javascript如何写热点图
2015/12/08 Javascript
Javascript基础_嵌入图像的简单实现
2016/06/14 Javascript
Nodejs抓取html页面内容(推荐)
2016/08/11 NodeJs
谈谈我在vue-cli3中用预渲染遇到的坑
2020/04/22 Javascript
[02:41]《西雅图我们来了》2015国际邀请赛出征全记录
2015/07/23 DOTA
[01:08:48]LGD vs OG 2018国际邀请赛淘汰赛BO3 第三场 8.25
2018/08/29 DOTA
Python编程对列表中字典元素进行排序的方法详解
2017/05/26 Python
pandas对指定列进行填充的方法
2018/04/11 Python
Python3.6使用tesseract-ocr的正确方法
2018/10/17 Python
django admin后台添加导出excel功能示例代码
2019/05/15 Python
Python3基础教程之递归函数简单示例
2019/06/07 Python
np.newaxis 实现为 numpy.ndarray(多维数组)增加一个轴
2019/11/30 Python
pandas中的数据去重处理的实现方法
2020/02/10 Python
基于jupyter代码无法在pycharm中运行的解决方法
2020/04/21 Python
Python Tricks 使用 pywinrm 远程控制 Windows 主机的方法
2020/07/21 Python
iframe与window.onload如何使用详解
2020/05/07 HTML / CSS
巴黎卡诗美国官方网站:始于1964年的头发头皮护理专家
2017/07/10 全球购物
台湾旅游网站:雄狮旅游网
2017/08/16 全球购物
全球最大的在线橄榄球商店:Lovell Rugby
2018/05/20 全球购物
英语演讲稿3分钟
2014/04/29 职场文书
政风行风建设责任书
2014/07/23 职场文书
2015年大学班长个人工作总结
2015/04/24 职场文书
在职证明范本
2015/06/15 职场文书
《包身工》教学反思
2016/02/23 职场文书
关于Python OS模块常用文件/目录函数详解
2021/07/01 Python
python数字转对应中文的方法总结
2021/08/02 Python