【问题标题】:PHP function argumentPHP 函数参数
【发布时间】:2016-04-05 04:06:39
【问题描述】:

我想用 3 个参数创建函数,第一个参数是 $field,第二个参数是 $condition,最后一个参数是 $value。 我做的功能是这样的:

function where($field, $condition = ' = ', $value);

我想调用这个代码运行的函数:

->where('name', 'andi')

条件将是默认的( = )

如果 $condition 在最后一个参数中很容易,但我希望 $condition 在中间。

如果我只用 2 个参数调用函数,如何知道第二个参数是 $value 而不是 $condition ? 任何想法 ?

提前谢谢你。

已解决func_num_args()

【问题讨论】:

标签: php function


【解决方案1】:

不,这是不可能的。您不能将默认参数挂在参数中间。查看文档:http://php.net/manual/en/functions.arguments.php

请注意,使用默认参数时,任何默认值都应位于任何非默认参数的右侧;否则,事情将无法按预期进行。

如果你坚持把它放在中间,把你的$value也默认为null,这样就变成了这样:

function where($field, $condition = ' = ', $value = null);

类似于 laravel 的做法:https://github.com/illuminate/database/blob/91622fc886baf6263de9f93237929dcc5d61537c/Query/Builder.php#L480

为了知道您是在处理where($field, $conditions, $value) 还是where($field, $value),您可以使用func_num_args() 进行简单的参数计数,以了解您正在处理哪些调用。

【讨论】:

  • 但是 laravel 在 eloquent 上有类似的功能。
  • 我不明白,如果我只用2个参数调用函数,怎么知道第二个参数是$value而不是$condition?
  • 我很抱歉错误的链接参考。再次检查答案中的链接。关于“如何知道第二个参数是值而不是条件”的逻辑
猜你喜欢
  • 2012-04-28
  • 1970-01-01
  • 2014-02-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-17
  • 2010-12-09
  • 2013-05-09
相关资源
最近更新 更多