模拟 Ruby “splat” 的最佳方式PHP 函数签名中的运算符【方法重载】
在 Ruby 中
def my_func(foo,bar,*zim)
[foo, bar, zim].collect(&:inspect)
end
puts my_func(1,2,3,4,5)
# 1
# 2
# [3, 4, 5]
在 PHP 中 (5.3)
function my_func($foo, $bar, ... ){
#...
}
在 PHP 中执行此操作的最佳方法是什么?
In Ruby
def my_func(foo,bar,*zim)
[foo, bar, zim].collect(&:inspect)
end
puts my_func(1,2,3,4,5)
# 1
# 2
# [3, 4, 5]
In PHP (5.3)
function my_func($foo, $bar, ... ){
#...
}
What's the best way to to do this in PHP?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
从与此相关的另一个问题复制我的答案:
Copying my answer from another question related to this:
尝试
func_get_args
— 返回包含函数参数列表的数组Ruby 代码片段的 PHP 版本
或仅
给出
请注意,func_get_args() 将返回传递给函数的所有参数,而不仅仅是那些不在签名中的参数。另请注意,您在签名中定义的任何参数都被视为必需的,如果它们不存在,PHP 将发出警告。
如果您只想获取剩余的参数并在运行时确定,您可以使用 ReflectionFunction API 用于读取签名中的参数数量和
array_slice
仅包含附加参数的完整参数列表,例如为什么有人会希望仅使用
func_get_args()
是超出了我的范围,但它会起作用。更直接的是通过以下任何一种方式访问参数:如果您需要记录变量函数参数,PHPDoc 建议使用
希望有帮助。
Try
func_get_args
— Returns an array comprising a function's argument listPHP Version of your Ruby Snippet
or just
gives
Note that
func_get_args()
will return all arguments passed to a function, not just those not in the signature. Also note that any arguments you define in the signature are considered required and PHP will raise a Warning if they are not present.If you only want to get the remaining arguments and determine that at runtime, you could use the ReflectionFunction API to read the number of arguments in the signature and
array_slice
the full list of arguments to contain only the additional ones, e.g.Why anyone would want that over just using
func_get_args()
is beyond me, but it would work. More straightforward is accessing the arguments in any of these ways:If you need to document variable function arguments, PHPDoc suggest to use
Hope that helps.