在php中源代码怎么查看,查看PHP Closure的源代码

您可以从PHP获得的是有限的,使用反射您只需获取函数的参数签名以及源代码文件的开始和结束行.我曾经写过一篇博客文章:

http://www.metashock.de/2013/05/dump-source-code-of-closure-in-php/ ……

它引导我使用反射以下代码:

function closure_dump(Closure $c) {

$str = 'function (';

$r = new ReflectionFunction($c);

$params = array();

foreach($r->getParameters() as $p) {

$s = '';

if($p->isArray()) {

$s .= 'array ';

} else if($p->getClass()) {

$s .= $p->getClass()->name . ' ';

}

if($p->isPassedByReference()){

$s .= '&';

}

$s .= '$' . $p->name;

if($p->isOptional()) {

$s .= ' = ' . var_export($p->getDefaultValue(), TRUE);

}

$params []= $s;

}

$str .= implode(', ', $params);

$str .= '){' . PHP_EOL;

$lines = file($r->getFileName());

for($l = $r->getStartLine(); $l < $r->getEndLine(); $l++) {

$str .= $lines[$l];

}

return $str;

}

如果你有以下关闭:

$f = function (Closure $a, &$b = -1, array $c = array())

use ($foo)

{

echo $this->name;

echo 'test';

};

closure_dump()将给出以下结果:

function (Closure $a, &$b = -1, array $c = array (

)){

use ($foo)

{

echo $this->name;

echo 'test';

};

你看它不完美(数组参数).它也不会正确处理一些边缘情况,特别是如果闭包是嵌套的,或者多个内联闭包将传递给一行中的函数.后者对我来说看起来最成问题.因为,你只得到反射的起始行和结束行,在这种情况下,这两个函数都将在那一行上,你没有任何有用的信息来决定应该转储哪一行.到目前为止,我没有找到解决方案,我也不确定是否有解决方案.

但是,在大多数情况下,只要您不依赖它,它至少应该对调试有帮助. Feel free to enhance it!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/431392.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

nginx禁止访问目录中可执行文件

某些网站系统需要用户上传图片等文件到某些目录下,难免程序有些漏洞,导致用户上传了php、cgi等等可执行的文件&#xff0c;导致网站陷入非常为难的境地. 此时我们可以通过nginx来禁止用户访问这些目录下的可执行文件。 nginx配置 1234location ~* /(images|cache|media|logs|tm…

svm多分类代码_监督学习——分类算法I

本文是监督学习分类算法的第一部分&#xff0c;简单介绍对样本进行分类的算法&#xff0c;包括判别分析(DA)支持向量机(SVM)随机梯度下降分类(SGD)K近邻分类(KNN)朴素贝叶斯分类(NaiveBayes)判别分析(Discriminant Analysis) 判别分析是基于条件概率的分类方法&#xff0c;可以…

oracle awr报告提取,Oracle AWR报告提取方法

默认情况下&#xff0c;oracle是启用数据库统计收集这项功能(AWR)通过show parameter statistics_level来判断是否启用值为TYPICAL或者ALL表示启用AWR值为BASIC&#xff0c;表示禁用AWR1.当前连接实例的AWR报告提取&#xff1a;?/rdbms/admin/awrrpt以sysdba身份登录。SQL>…

关键词组合工具_SEO学习:如何挖掘行业关键词?关键词挖掘策略和工具推荐

关键词是驱动流量增长的基础&#xff01;挖掘关键词是SEO工作的重中之重。如何快速挖掘到行业相关的所有关键词&#xff1f;我们一起了解下。本文大纲如下&#xff1a;拓展和筛选网站主词挖掘搜索引擎推荐关键词业务相关词的挖掘同行关键词的挖掘关键词组合拓展1、拓展和筛选网…

oracle em中查看jiob,HTML5 中的 b/strong、i/em 详解

这篇文章主要聊一聊 HTML5 中的 和 &#xff0c;以及 和 。从页面显示效果来看&#xff0c;被 和 包围的文字将会被加粗&#xff0c;而被 和 包围的文字将以斜体的形式呈现。那大家可能就会疑惑了&#xff0c;既然效果一样&#xff0c;那为什么还要重复定义标签呢&#x…

活体检测python_活体检测很复杂?仅使用opencv就能实现!(附源码)!

摘要&#xff1a; 活体检测在各行各业应用比较广泛&#xff0c;如何实现一个活体检测系统呢&#xff1f;早期实现很困难&#xff0c;现在仅使用opencv即可实现&#xff0c;快来尝试一下吧。什么是活体检测&#xff0c;为什么需要它&#xff1f;随着时代的发展&#xff0c;人脸识…

bootstrap清除拟态框内添加新HTML再打开时会有缓存现象

$(function(){$("#editor").on("hidden.bs.modal",function(){//清除缓存方法$(this).find("#textareaTo").empty();}); }); 转载于:https://www.cnblogs.com/zhixi/p/4789259.html

php 结尾,PHP“意外结束”

我实际上检查了我的代码一百次,但我找不到错误&#xff1a;我得到的错误&#xff1a;解析错误&#xff1a;语法错误,意外$end在/home/tennox/public_html/php/kalender.php第46行我试图做一个计算复活节星期日的函数,在另一个脚本中没有其他所有它只是起作用,但在这个没有.另一…

基于python的个人博客系统的设计开题报告_个人博客设计实现开题报告

现在的毕业设计的开题报告是很难写吗&#xff0c;以个人博客设计为课题的开题报告怎么写&#xff1f;看下文是yjbys小编搜集整理的关于开题报告的相关资料&#xff0c;希望对大家有所帮助!1本课题所涉及的问题在国内(外)的研究现状综述&#xff1a;信息化的世界&#xff0c;对于…

(转)腾讯2011.10.15校园招聘会笔试题

1、下面的排序算法中&#xff0c;初始数据集的排列顺序对算法的性能无影响的是&#xff08;&#xff09; A、插入排序 B、堆排序 C、冒泡排序 D、快速排序 答&#xff1a;B。堆排序&#xff0c;这题不是求稳定性&…

oracle安装命令大全,oracle安装教程及常用命令

虽然网上已经有很多安装教程了,但还是写一个记录一下自己的安装过程以及遇到问题的解决办法1 安装包下载:去oracle的官网 选择DownLoads->database->oracle database:选择接受选择Windows 64的下载,选择file1,和file2,注意两个文件都要下载,下载时要求登录,有oracle账户的…

规格选择_日常使用的拉杆箱脚轮选择哪种规格最合适?

大家可能在采购拉杆箱脚轮的时候&#xff0c;都会有一个问题&#xff0c;拉杆箱脚轮规格选择哪种比较好呢&#xff1f;万向轮好还是单向轮&#xff1f;是万向轮还是单向轮比较耐磨&#xff1f;脚轮厂家诺贝小编接收到大家的疑问&#xff0c;接下来将告诉大家拉杆箱脚轮选择的规…

ERROR: JDWP Transport dt_socket failed to initialize, TRANSPORT_INIT(510)

1   ERROR: transport error 202: bind failed 2 ERROR: JDWP Transport dt_socket failed to initialize, TRANSPORT_INIT(510) 3 JDWP exit error AGENT_ERROR_TRANSPORT_INIT(197): No transports initialized [../../../src/share/back/debugInit.c:690] 4 …

php session存到redis,php Session存储到Redis的方法

php Session存储到Redis的方法当然要写先安装php的扩展&#xff0c;可参考这篇文章&#xff1a;Redis及PHP扩展安装修改php.ini的设置复制代码 代码如下:session.save_handler redissession.save_path “tcp://127.0.0.1:6379″修改后重启php-fpm或nginx&#xff0c;phpinfo(…

ajax ssm 页面跳转_SSM框架的面试常见问题

阅读文本大概需要9分钟。一、Spring面试题1、Spring 在ssm中起什么作用&#xff1f;Spring&#xff1a;轻量级框架作用&#xff1a;Bean工厂&#xff0c;用来管理Bean的生命周期和框架集成。两大核心&#xff1a;IOC/DI(控制反转/依赖注入) &#xff1a;把dao依赖注入到service…

poj Going from u to v or from v to u? 强联通缩点+拓扑排序(或搜索)

方法一 #include <stdio.h> #include <string.h> #include <iostream> #include <algorithm> #include <vector> #include <queue> #include <stack> #include <set> #include <map> #include <string> #include …

php搭建的网站空白,使用phpstudy搭建dedecms网站后台页面空白解决方法

这篇文章主要为大家详细介绍了使用phpstudy搭建dedecms网站后台页面空白解决方法&#xff0c;具有一定的参考价值&#xff0c;感兴趣的小伙伴们可以参考一下,有需要的朋友可以收藏方便以后借鉴。在把 phpStudy升级到2013版后&#xff0c;在登录本地织梦dedecms5.7时&#xff0c…

运维工程师绩效考核表_IT运维存在问题及改进

欢迎大家一起学习交流https://t.zsxq.com/imimAYF​t.zsxq.com1.1 IT运维机制不完善&#xff0c;流程操作层面缺乏统一 没有建立起稳定、规范的IT运维机制。现有的IT运维流程的操作层面缺乏统一。如事件单提交之后&#xff0c;事件预判和优先级的设定缺少统一、规范的指导文档&…

在linux中 要删除abc目录,操作系统原理与应用(linux)A卷

福州外语外贸职业技术学院2010-2011学年第一学期(期末)试卷09 级网络系统管理专业操作系统原理与应用(linux)科目(A )卷课程代码考试形式闭卷考试时量 120 分钟姓名__ _______ _级班学号____ __1.操作系统是一种( )A.系统软件B.系统硬件C.应用软件D.支援软件2.MS—DOS的存贮管理…

数据产品经理修炼手册pdf_【尼读书】数据产品经理修炼手册(附思维导图)

前言&#xff1a;进入一个行业&#xff0c;除了要多在工作中实践和思考之外&#xff0c;还需要多读书。这样能够站在一个更高的角度去看问题&#xff0c;往往会对问题有更全面的掌握和新的认知。在【尼读书】这个栏目中&#xff0c;尼同学通过自己读书后的理解和整理与大家分享…