首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

PHP:我如何知道函数的调用者?

在 PHP 中,函数调用者可以通过函数的参数列表和函数名来推断。

具体来说,每个函数都有一个唯一的函数名,这个函数名在代码中可能是以字母、数字或下划线组成的。在函数名后面,会跟着一个参数列表,这个参数列表由一系列的变量组成,这些变量被传递给函数并在函数内部使用。

例如,考虑下面的代码:

代码语言:txt
复制
function foo($x, $y) {
    echo "Hello, $x and $y!";
}

foo(1, 2); // 输出 "Hello, 1 and 2!"

在这个例子中,foo 函数有两个参数 $x$y,并且在函数体内使用了这两个参数。因此,我们可以推断出调用 foo 函数的代码可能是这样的:

代码语言:txt
复制
$x = 1;
$y = 2;
foo($x, $y);

在这个例子中,我们可以看到 foo 函数的调用者通过传递两个参数 12 来调用函数。

因此,PHP 可以通过函数的参数列表和函数名来确定函数的调用者。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

如何在Go函数中得到调用者函数名?

原文作者:smallnest 有时候在Go函数调用过程中,我们需要知道函数被谁调用,比如打印日志信息等。例如下面的函数,我们希望在日志中打印出调用者名字。...因为在编译之前,我们肯定知道打印时候所在哪个函数,但是更好方式是编写一个通用函数,比如下面的例子: 1package main 2import ( 3 "fmt" 4 "runtime...main.Foo, 谁在调用2是 main.Bar, 谁又在调用可以看到函数在被调用时候,printMyName把函数本身名字打印出来了,注意这里Caller参数是1, 因为我们将业务代码封装成了一个函数...首先打印函数调用者名称 将上面的代码修改一下,增加一个新printCallerName函数,可以打印调用者名称。...0 代表当前函数,也是调用runtime.Caller函数。1 代表上一层调用者,以此类推。

5.2K30

如何在 Go 函数中获取调用者函数名、文件名、行号...

对于在记录日志时记录调用 Logger 方法调用者函数名、行号这些信息。...如果让我们用 Go 设计一个Log Facade,就需要我们自己在门面里获取调用者函数名、文件位置了,那么在Go里面怎么实现这个功能呢?...参数skip为要上溯栈帧数,0 表示Caller调用者(Caller所在调用栈),1 表示调用 Caller 调用者调用者,以此类推。...//获取是 CallerA函数调用者调用栈 pc1, file1, lineNo1, ok1 := runtime.Caller(1) } 函数返回值为调用栈标识符、带路径完整文件名...获取调用者函数名 runtime.Caller 返回值中第一个返回值是一个调用栈标识,通过它我们能拿到调用栈函数信息 *runtime.Func,再进一步获取到调用者函数名字,这里面会用到函数和方法如下

6.2K20

PHP面试题:你所知道php数组相关函数

array()----创建数组 array_combine()----通过合并两个数组来创建一个新数组 range()----创建并返回一个包含指定范围元素数组 compact()----建立一个数组...将一个数组分割成多个 array_merge()----把两个或多个数组合并成一个数组 array_slice()----在数组中根据条件取出一段值 array_diff()----返回两个数组差集数组...array_intersect()----计算数组交集 array_search()----在数组中搜索给定值 array_splice()----移除数组一部分且替代它 array_key_exists...()----判断某个数组中是否存在指定key shuffle()----把数组中元素按随机顺序重新排列 array_flip()----交换数组中键和值 array_reverse()---...-将原数组中元素顺序翻转,创建新数组并返回 array_unique()----移除数组中重复

34020

php代码执行函数_php代码如何运行

大家好,又见面了,是你们朋友全栈君。 ** php代码执行函数解析 ** ​一、代码执行漏洞原理: 用户输入数据被当做后端代码进行执行 <?php @eval($_REQUEST[8])?...现在只要渗透最终情况可以实现执行命令或者是代码都属于RCE,例如代码执行、文件包含、反序列化、命令执行,甚至是写文件Getshell都可以属于RCE 在PHP存在诸多函数可以做到代码执行。...(\_REQEUST['a'])//如何多行执行呢 写文件然后执行,例如: file_put_contents('1.php','<?...); Eval 是无法调用,因为eval比较特殊,不认为是函数属于特殊写法 call_user_func() 也可以回调,回调函数php有很多。...6.特殊组合(双引号二次解析) PHP版本5.5及其以上版本可以使用 “{phpinfo()}”; => 代码执行phpinfo() php字符串是可以使用复杂表达式。

15.8K20

知道如何PHP 实现多进程吗?

本文将讲解如下内容:1.PHP 原生进程函数介绍2.PHP 实现多进程代码1、PHP 原生进程函数虽然说 PHP 是世界上最好语言,但是对于 PHPer 们来说,对多进程、进程管理还是相对陌生。...本文将讲解一下使用 PHP 原生代码如何实现多进程。首先我们要了解 PHP 实现多进程函数,如 pcntl_fork、pcntl_wait、pcntl_waitpid 等。...子进程创建成功时,在父进程执行线程内返回产生子进程 PID,在子进程执行线程内返回 0。创建失败时,在父进程上下文返回 - 1,不会创建子进程,并且会引发一个 PHP 错误。...调用这个函数会挂起当前进程执行,直到参数 pid 指定进程号进程退出,或者接收到一个信号要求中断当前进程或调用一个信号处理函数。...函数返回值为 bool 型,成功时返回 true,失败时返回 false。2、PHP 实现多进程代码

37720

PHP引用,你知道多少

真的是变懒了,一个月一篇节凑都很难保证了。 最近面试他人过程中,问了一些关于PHP引用知识,发现很多同学对这方面知之甚少,还有很多工作中基本没有使用过。...甚至有人告诉要少用引用,引用会带来一些诡异问题。心里默默说,避免诡异问题是要去理解引用而不是少用引用。今天一起来解析解析。 场景假设 先从一个引用所谓诡异问题开始。...通过上面的分析,相信大家对引用所谓诡异有了了解。那么又该如何避免这种情况出现呢?其实很简单,每次使用完引用后,记得 unset 调引用。在后面便可毫无顾忌继续使用了。...前面说过,引用可以写出简洁代码。...公司使用PHP7语法,对新技术是保持激进态度。对于上海小伙伴或者想去上海小伙伴,强烈建议去看看。

1.1K20

PHP函数

函数调用 function sum($x,$y) //形参:在声明函数时声明参数 { // $x = 1; //如果在函数内对参数赋值,则会覆盖实参。...); //实参:在调用函数时传递给形参数值 echo sum(2,2); //通过return返回数据可作为值使用 局部变量:函数内部声明与使用变量 全局变量:在函数外声明,脚本任何地方均可以使用...Tips:在PHP函数中使用全局变量,要通过global关键字将这个 全局变量包含到函数中才能使用 $a = 1; $b = 2; function demo($a = '') { //global...A,但是我们不直接去调函数A, 而是在函数B中去调用函数A,函数B通过接收函数A 名字和参数来实现对函数A调用,函数A称为回调函数。...回调函数实现方法 php提供了两个内置函数call_user_func()和 call_user_func_array()提供对回调函数支持 //mixed call_user_func_array

2.2K50

php命名规范

1.变量 所有字母都使用小写,使用'_'作为每个词分界,如$user_name 2.函数 函数命名使用小写字母和下划线方式,如get_client_ip 3.方法 方法命名使用驼峰法,并且首字母小写或者使用下划线...“_”,例如 getUserInfo,_formatAge,通常下划线开头方法属于私有方法; 以双下划线“__”打头函数或方法作为魔法方法,例如 __call 和 __autoload; 4.类名...并且首字母大写,另外类名和文件名保持一致 5.常量 常量以大写字母和下划线命名,例如 HAS_ONE和 MANY_TO_MANY; 配置参数以大写字母和下划线命名,例如HTML_CACHE_ON 6.属性名 属性命名使用驼峰法...,并且首字母小写或者使用下划线“_”,例如 tableUser、_instance,通常下划线开头属性属于私有属性;

83280

PHP如何为匿名函数指定this?

PHP如何为匿名函数指定this? 关于闭包匿名函数,在JS中有个很典型问题就是要给它绑定一个 this 作用域。...其实这个问题在PHP中也是存在,比如下面这段代码: $func = function($say){ echo $this->name, ':', $say, PHP_EOL; }; $func...首先,它直接执行了,不需要再赋值给一个变量,也就是说,它不是去复制那个闭包函数而是直接执行了;其次,没有 类作用域 这个概念了,第一个参数还是指定新 $this 指向,而后面的参数就是原来闭包函数参数...当然,这也是看我们自己业务情况了,毕竟两种形式我们在写代码时候都是可以自由选择。 总结 其实包括闭包函数在内,这些特性都非常像JS。...这也是语言融合一种趋势,不管是学习了JS来看PHP这些特性还是先学了PHP再去看JS,都会让我们更容易理解它们作用与能力,这就是语言特性融合带来好处。不管怎么样,学就是了,继续加油吧!!

2.1K10

PHP中那些你不知道坑,PHP坑,PHP漏洞

函数返回参数之坑 通常函数返回数据类型都是固定,比如Int,String,Array等。但是PHP不一样,PHP中很多函数返回数据类型并不固定。...遇到时也是一脸懵,好在这个问题可以通过修改配置文件修复,在PHP7.2之后默认关闭了json_encode函数保留更多精度开关。只有PHP7.1版本有这个问题。...json_decode($json)函数之前有一篇文章分析过,存在hash碰撞漏洞,至今未改进。 数组类型太少之坑 PHP虽然有数组概念,但全都是HashTable。...至于在知乎上大家说那些问题,觉得都不是什么大问题。例如语法不美,速度不快,函数命名不规范……为什么大家都喜欢喷这几点?...猜测是因为这几点容易解释并且不好反驳,比如说$和->语法不美,你确实没办法反驳,每个人对美的认知不一样。说速度不快,也有道理,因为再怎么优化都有比你快编程语言。最后『PHP是世界上最好语言』

94940

知道前端(二)

记录下学习笔记 标签模板化字面量 啊c这是什么东西听起来好厉害 不说都不知道,这是通过``定义字符串带有的特性,我们光知道 `${}` 这种用法,却很少有人知道下边这种用法 `\n`....出于好奇,试着如下调用了这个标签函数: String.raw(`\n`) String.raw("\n") raw()函数只接收无括号调用方式 ---- LHS查询和RHS查询* JavaScript...是有编译器蛮怀疑人生听到这个 L、R代表左侧和右侧,什么玩意儿左侧和右侧呢?...在JavaScript中Date、Array这些内置类(然而往底下纠的话,原来这些都是构造函数,震撼一整年)你也肯定耳熟能详。如果你还不知道什么原型,往下走看一下"什么原型链"然后回来看看。...Dateprototype,现在想着是整条原型链出来,首先放张经典原型链继承关系图,几乎每篇文章都能看到这个 我们怎么样才能整出条自己原型继承,其实保持下边两个准则就行: 将儿子原型__proto

37620

知道apply与call

知道apply与call 在打算写这篇文章之前徘徊了两分钟(没错就是两分钟), 徘徊原因是觉得以我当前对于js儿子-call与apply掌握, 还不足以我能够很好去解释给自己或者读者去听...但写了这篇文章一个原因是蛮久没有写了博客, 也该写了(尽力微笑…). 另一个原因是想通过角度去说下对于apply和call看法....其实在刚刚认识call或者apply时候, 在想这两个货是到底干嘛, 在没有认识他们之前, 也完成了某些功能开发呀, 这两个货色作用到底是什么, 觉得有必要去好好了解下....(栗子是_-_), 想表达其实和上面描述里面提到, 其实是一回事, 觉得是这样, bar这个人想看下自己家房产证名字写是谁, 但是没有梯子, 因为房产证放在需要梯子才能够到地方, 所以他问了邻居...需要注意是, 指定this值并不一定是该函数执行时真正this值, 如果这个函数处于非严格模式下, 则指定为null与undefinedthis值会自动指向全局对象(浏览器中就是window对象

20810
领券