大佬教程收集整理的这篇文章主要介绍了php – 如何确定传递参考变量是否设置?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
function foo($first,&$second = null) { // if ($second is assigned) { // Work with $second // } }
如果确定$second是否确实在通话时分配给一个变量,例如:
foo('Hello',$second);
VS
foo('Hello'); // Notice &$second is unassigned
尝试了isset(),is_null(),但似乎不起作用.
更新:
在内部,PHP函数使用一个名为zend_parse_parameters()的函数;它接受将使用@L_450_11@参数的元数据填充的格式字符串和可变数量的参数.如果参数没有被传递(例如,当它是可选的)时,元数据是不可用的,因此容易检测.
回到PHP本身,不幸的是没有func_arg_used($var)这样的东西,会告诉你$var是否作为函数参数传递;也许这对语言有一个有意义的贡献,但是直到那时,你将不得不为更古老的东西而定居:)
if (func_num_args() > 1) { // $second was passed and can be used to populate }
更改功能的签名时可能需要小心,特别是在$second之前添加参数时;然而,自然,这不应该经常发生,因为它绝对会破坏依赖的功能.在末尾添加更多的参数对上面的代码没有影响.
有两种方法可以与之进行:
> ReflectionFunction
– 开发人员闪亮的新玩具,它允许您内省自己的功能,并确定签名是否从创建时改变.使用它谨慎,反思不便宜,特别是考虑到替代品.>谦虚的代码评论 – 代码监管的低调形式;一个简单的行,说明重要 – 不要在$second之前添加参数
以上是大佬教程为你收集整理的php – 如何确定传递参考变量是否设置?全部内容,希望文章能够帮你解决php – 如何确定传递参考变量是否设置?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。