我想做点什么:
function func($var1 = 'Hello', $var2 = "{$var1} World") { echo $var2; }
这是不可能的!
我的想法是避免在我的函数中使用额外的代码行,但我不知道这是否可行。
有人知道在php中是否可以执行类似的程序? 感谢。
答案 0 :(得分:3)
像其他答案一样,你不能直接在PHP中这样做。我对这些情况的解决方案通常是使用类似的东西模仿行为
function func($var1 = 'Hello', $var2 = null)
{
if ($var2 === null)
$var2 = $var1.' Worls';
}
但最大的缺点是你正在复制PHP行为,因此当变量被遗忘,类型错误等时你必须抛出自己的异常。
答案 1 :(得分:2)
在PHP本身是不可能的(如果我是狼,请纠正我)。 你想做的是面向方面编程。 但我不知道任何可接受的php框架。 例如,在java中,您可以使用AspectJ并在调用某个MyClass.method()之前运行代码;这样你每次调用MyClass.method();在执行之前,一些其他代码将自动执行,而不是将其添加到method()方法本身。 这是通过在正确的位置自动插入代码来实现的。
答案 2 :(得分:1)
如果您只想将$ var2添加到$ var1前面,那么您可以在函数的第一行设置它,例如。
function func($var1 = 'Hello', $var2 = " World") {
$var2 = $var1 . $var2;
echo $var2;
}
答案 3 :(得分:1)
我认为这里的基本答案是否定的,不可能按照你要求的方式进行。
您最接近要求的功能是使用func_get_args()
和相关功能(尽管在其他答案中已经说明,您的具体用例确实只需要在函数顶部有几行非常简单的代码。)
答案 4 :(得分:0)
PHP中没有表达式语言,但您可以使用运算符.
来连接字符串。
试试这个:
function func($var1 = 'Hello', $var2 = ' Worls') { echo $var1.$var2; }
不,你不能在函数参数中使用它。你为什么要那样?只是在身体功能中做到这一点。如果函数参数中没有逻辑,那就更好了。更清晰,更清晰,更可维护。
在性能方面也不太好。您正在创建$var1
默认值和$var2
默认值之间的依赖性。处理器可能出于任何原因(主要是优化)以相反的顺序分配默认值,但由于您引入了依赖关系,因此无法再进行,因此处理器必须等到$var1
被解析为能够分配$var2
。得到它?
无论如何,语言不允许你这样做。但至少现在你可能有一个可能的原因(完全是我的假设,我确信它有更多不同的原因)。