【问题标题】:use php functions as function argument [closed]使用php函数作为函数参数[关闭]
【发布时间】:2013-03-31 11:08:42
【问题描述】:

我们可以在自定义函数参数中调用php函数吗?

示例

function customFunction(trim($args),addslashes($args_second))
{
    //other code
}

这给了Parse error: syntax error, unexpected '(', expecting '&' or T_VARIABLE 错误。这是正确的方法吗?

我知道我可以在函数内部做到,但为什么我不能这样做。?

【问题讨论】:

  • 只是因为函数定义规则不允许这样做,所以PHP语言语法规则是这样定义的
  • 为什么不在函数内部使用trim和addslashes函数??
  • 因为它不在语言规范中?主要是因为解析器很难为这个函数创建符号表的条目。
  • @Bart 如果这是关于类型提示的东西,也许这种语法意味着$args 必须是与trim() 兼容的类型,我可以看到。 OP希望它的意思是“在我的论点到达函数体之前对其进行预处理”,这对我来说听起来是个糟糕的主意。您想在 函数签名 中支持任意表达式,本质上允许您将整个函数体填充到签名中吗?好像 PHP 还没有足够的意大利面条代码... :)
  • 当该函数可以将这些函数应用于您的参数inside 它的主体时,为什么要将它们放在那里,即使您找到这样的功能也会有什么不同

标签: php function argument-passing


【解决方案1】:

这就是语言的设计方式。您必须将这些调用放在您的函数定义中:

function customFunction($args,$args_second)
{
    $args = trim($args);
    $args_second = addslashes($args_second);

    //other code
}

【讨论】:

  • 我不知道 PHP 是“设计的”,xD。
【解决方案2】:

您不能在函数参数的定义中使用表达式。只有赋值运算符才能指定默认值。

这是不可能的,因为参数没有“评估”。

【讨论】:

  • 我认为 OP 已经意识到,问题是为什么这是不可能的。
【解决方案3】:

正确的方法:

function customFunction($arg1,$arg2) {
 $arg1 = trim($arg1);
 $arg2 = addslashed($arg2);
 //do
}

【讨论】:

    【解决方案4】:

    ,你不能在php中做到这一点。

    你可以这样做。

     function customFunction($arg1, $arg2) {
        $arg1 = trim($arg1);
        $arg2 = addslashes($arg2);
        // use $arg1 and $arg2
      }
    

    【讨论】:

      【解决方案5】:

      你想要做的事情是 php 不可能做到的。

      信息可以通过参数列表传递给函数,参数列表是一个逗号分隔的表达式列表。参数从左到右计算。

      PHP 支持按值(默认)、passing by referencedefault argument values 传递参数。也支持Variable-length argument lists

      Read more

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-05-22
        • 2021-07-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-01-16
        • 1970-01-01
        相关资源
        最近更新 更多