繁体   English   中英

在PHP中使用变量设置默认函数参数

[英]Setting default function parameters with variable in php

我想做类似的事情:

function func($var1 = 'Hello', $var2 = "{$var1} World") { echo $var2; }

这是不可能的!

我的想法是避免在函数中使用多余的代码行,但是我不知道这是否可行。

有人知道是否可以在php中执行类似的步骤? 谢谢。

就像其他答案一样,您不能直接在PHP中执行此操作。 我对这些情况的解决方案通常是使用类似这样的方式来模仿行为

function func($var1 = 'Hello', $var2 = null)
{
  if ($var2 === null)
    $var2 = $var1.' Worls';
}

但是最大的缺点是您正在复制PHP行为,因此当忘记变量,错误的类型等时,您将不得不抛出自己的异常。

在PHP本身是不可能的(请纠正我,如果我很累)。 您想要做的就是面向方面的编程。 但我不知道任何可接受的PHP Aspect框架。 例如,在Java中,可以在调用特定MyClass.method()之前使用AspectJ并运行代码。 这样,每次您调用MyClass.method(); 在执行之前,将自动将其他代码添加到method()方法本身中。 这是通过在正确的位置自动插入代码来实现的。

如果只想让$ var2前面加上$ var1,则可以将其设置在函数的第一行,例如。

function func($var1 = 'Hello', $var2 = " World") { 
    $var2 = $var1 . $var2;
    echo $var2; 
}

我认为这里的基本答案是“否”,这不可能按照您的要求进行。

您最接近要求的功能的是使用func_get_args()和相关函数(尽管正如其他答案中所述,您的特定用例实际上只需要几行代码即可)。函数顶部的非常简单的代码)。

PHP中没有表达语言,但是您可以使用operator . 连接字符串。

尝试这个:

function func($var1 = 'Hello', $var2 = ' Worls') { echo $var1.$var2; }

不,您不能在function参数中使用它。 你为什么要那个? 只是在身体功能上做到这一点。 最好在函数参数中没有逻辑。 更清晰,更清晰,更易维护。

在性能方面也不是很好。 您正在创建$var1默认值和$var2默认值之间的依赖关系。 无论出于何种原因(主要是优化),处理器都可能以相反的顺序分配默认值,但是由于您引入了依赖关系,因此无法再执行此操作,因此处理器必须等到解析$var1才能分配$var2 得到它?

无论如何,这种语言不允许您这样做。 但是至少现在您有一个可能的原因原因(总体上我的假设是,我敢肯定还有更多不同的原因)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM