[英]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.