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

在php中使用变量设置默认函数参数,php,function,syntax,Php,Function,Syntax,我想做一些类似的事情: function func($var1 = 'Hello', $var2 = "{$var1} World") { echo $var2; } 这是不可能的 我的想法是在我的函数中避免额外的代码行,但我不知道这是否可行 有人知道在php中是否可以使用类似的过程吗? 谢谢。PHP中没有表达式语言,但您可以使用运算符连接字符串 试试这个: function func($var1 = 'Hello', $var2 = ' Worls') { echo $var1.$var2;

我想做一些类似的事情:

function func($var1 = 'Hello', $var2 = "{$var1} World") { echo $var2; }
这是不可能的

我的想法是在我的函数中避免额外的代码行,但我不知道这是否可行

有人知道在php中是否可以使用类似的过程吗?
谢谢。

PHP中没有表达式语言,但您可以使用运算符
连接字符串

试试这个:

function func($var1 = 'Hello', $var2 = ' Worls') { echo $var1.$var2; }
不,不能在函数参数中使用它。你为什么要那样?只是在身体机能上做。如果函数参数中没有逻辑就更好了。更清晰、更易读、更易维护

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


无论如何,语言不允许你这么做。但至少现在您可以找到一个可能的原因(完全是我的假设,我相信还有更多不同的原因)。

如果您只希望$var1在$var2前面加上$var1,那么您可以在函数的第一行设置它,例如

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

正如其他答案所说,您不能直接在PHP中执行此操作。对于这些情况,我的解决方案通常是使用类似这样的方法来模拟行为

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

但最大的缺点是您复制了PHP行为,因此当忘记变量、错误类型等时,您必须抛出自己的异常。

在PHP本身中,这是不可能的(如果我正在工作,请纠正我)。 您要做的就是所谓的面向方面编程。 但我不知道php有什么可接受的方面框架。 例如,在java中,您可以使用AspectJ并在调用某个MyClass.method()之前运行代码;所以每次调用MyClass.method();在执行之前,一些其他代码将自动执行,而不将其添加到method()方法本身。
这是通过在正确的位置自动插入代码来实现的。

我认为这里的基本答案是否定的,不可能按您要求的方式执行


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

我知道运算符。可以连接字符串,但不能在函数参数中使用。我知道我可以这样做,但我想避免在函数中插入代码行,我问我这是否可行。我只想避免if语句,但可能不可行。这是为了测试第二个参数“包含”第一个参数吗?在这种情况下,我希望我们都能在PHP中进行模式匹配,但不幸的是,情况并非如此……也就是说,将第一个参数值加上一些东西分配给第二个参数值。我认为在这种情况下,模式匹配是没有意义的。