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 无法载入mysql扩展
Mar 12 PHP
php中全局变量global的使用演示代码
May 18 PHP
PHP漏洞全解(详细介绍)
Nov 13 PHP
CI框架源码阅读,系统常量文件constants.php的配置
Feb 28 PHP
PHP header()函数常用方法总结
Apr 11 PHP
ThinkPHP模板引擎之导入资源文件方法详解
Jun 18 PHP
php 利用socket发送HTTP请求(GET,POST)
Aug 24 PHP
PHP判断FORM表单或URL参数来的数据是否为整数的方法
Mar 25 PHP
PHP实现通过URL提取根域名
Mar 31 PHP
wordpress网站转移到本地运行测试的方法
Mar 15 PHP
ThinkPHP3.2框架操作Redis的方法分析
May 05 PHP
在 Laravel 项目中使用 webpack-encore的方法
Jul 21 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代码简化
2010/02/08 PHP
php4与php5的区别小结(配置异同)
2011/12/20 PHP
自制PHP框架之模型与数据库
2017/05/07 PHP
Laravel实现短信注册的示例代码
2018/05/29 PHP
php新建文件的方法实例
2019/09/26 PHP
php判断数组是否为空的实例方法
2020/05/10 PHP
jQuery温习篇 强大的JQuery选择器
2010/04/24 Javascript
javascript动态加载三
2012/08/22 Javascript
jQuery Ajax调用WCF服务详细教程
2015/03/31 Javascript
js流动式效果显示当前系统时间
2016/05/16 Javascript
底部悬浮通栏可以关闭广告位的实现方法
2016/06/01 Javascript
AngularJS基础 ng-keyup 指令简单示例
2016/08/02 Javascript
JS正则替换掉小括号及内容的方法
2016/11/29 Javascript
详解vue2.0 transition 多个元素嵌套使用过渡
2017/06/19 Javascript
vue 自定义组件 v-model双向绑定、 父子组件同步通信的多种写法
2017/11/27 Javascript
Vue shopCart 组件开发详解
2018/01/26 Javascript
Mac下通过brew安装指定版本的nodejs教程
2018/05/17 NodeJs
Vue+axios实现统一接口管理的方法
2018/07/23 Javascript
微信小程序实现吸顶效果
2020/01/08 Javascript
python+mysql实现简单的web程序
2014/09/11 Python
Python中使用语句导入模块或包的机制研究
2015/03/30 Python
解析Python中的二进制位运算符
2015/05/13 Python
Python函数可变参数定义及其参数传递方式实例详解
2015/05/25 Python
详解python 发送邮件实例代码
2016/12/22 Python
用python处理MS Word的实例讲解
2018/05/08 Python
CSS3教程(5):网页背景图片
2009/04/02 HTML / CSS
蔻驰西班牙官网:COACH西班牙
2019/01/16 全球购物
澳大利亚买卖正宗二手奢侈品交易平台:Luxe.It.Fwd
2019/10/16 全球购物
What's the difference between deep copy and shallow copy? (深拷贝与浅拷贝有什么区别)
2015/11/10 面试题
个人承诺书
2014/03/26 职场文书
婚礼秀策划方案
2014/05/19 职场文书
保险公司岗前培训工作总结
2015/10/24 职场文书
Python 实现定积分与二重定积分的操作
2021/05/26 Python
基于Redis的List实现特价商品列表功能
2021/08/30 Redis
Python 中 Shutil 模块详情
2021/11/11 Python
十大冰系宝可梦排名,颜值最高的阿罗拉九尾,第三使用率第一
2022/03/18 日漫