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数据库(3)
Oct 09 PHP
一个简单的MySQL数据浏览器
Oct 09 PHP
php empty函数 使用说明
Aug 10 PHP
PHP XML操作的各种方法解析(比较详细)
Jun 17 PHP
检测png图片是否完整的php代码
Sep 06 PHP
匹配csdn用户数据库与官方用户的重合度并将重叠部分的用户筛选出来
Dec 25 PHP
PHP静态文件生成类实例
Nov 29 PHP
PHP统一页面编码避免乱码问题
Apr 09 PHP
PHP全局变量与超级全局变量区别分析
Apr 01 PHP
php 魔术常量详解及实例代码
Dec 04 PHP
php中遍历二维数组并以表格的形式输出的方法
Jan 03 PHP
PHP微信发送推送消息乱码的解决方法
Feb 28 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 park、unpark、ord 函数使用方法(二进制流接口应用实例)
2010/10/19 PHP
PHP常用特殊运算符号和函数总结(php新手入门必看)
2013/02/02 PHP
PHP中多线程的两个实现方法
2016/10/14 PHP
关于 Laravel Redis 多个进程同时取队列问题详解
2017/12/25 PHP
javascript检测浏览器flash版本的实现代码
2011/12/06 Javascript
快速查找数组中的某个元素并返回下标示例
2013/09/03 Javascript
利用JavaScript检测CPU使用率自己写的
2014/03/22 Javascript
JavaScript函数的4种调用方法详解
2014/04/22 Javascript
对js关键字命名的疑问介绍
2014/04/25 Javascript
js实现上传图片预览的方法
2015/02/09 Javascript
jQuery插件datepicker 日期连续选择
2015/06/12 Javascript
漂亮! js实现颜色渐变效果
2016/08/12 Javascript
Javascript中作用域的详细介绍
2016/10/06 Javascript
AngularJs中 ng-repeat指令中实现含有自定义指令的动态html的方法
2017/01/19 Javascript
JavaScript实现时钟滴答声效果
2017/01/29 Javascript
jQuery遍历节点方法汇总(推荐)
2017/05/13 jQuery
集合Bootstrap自定义confirm提示效果
2017/09/19 Javascript
Angular7创建项目、组件、服务以及服务的使用
2019/02/19 Javascript
[49:29]LGD vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
[04:15]DOTA2-DPC中国联赛1月19日Recap集锦
2021/03/11 DOTA
python正则匹配查询港澳通行证办理进度示例分享
2013/12/27 Python
Python下实现的RSA加密/解密及签名/验证功能示例
2017/07/17 Python
Python 基础教程之闭包的使用方法
2017/09/29 Python
python中使用zip函数出现错误的原因
2018/09/28 Python
修改python plot折线图的坐标轴刻度方法
2018/12/13 Python
Python批量删除mysql中千万级大量数据的脚本分享
2020/12/03 Python
Cecil Mode法国在线商店:女性时尚
2021/01/08 全球购物
Internet体系结构
2014/12/21 面试题
非常详细的C#面试题集
2016/07/13 面试题
国际金融专业大学生职业生涯规划书
2013/12/28 职场文书
大学生实习鉴定评语
2014/04/25 职场文书
单位作风建设剖析材料
2014/10/11 职场文书
2014年禁毒工作总结
2014/11/24 职场文书
《悬崖边的树》读后感2篇
2019/12/02 职场文书
SQLServer2019 数据库环境搭建与使用的实现
2021/04/08 SQL Server
python基于opencv批量生成验证码的示例
2021/04/28 Python