【发布时间】:2014-05-25 03:26:48
【问题描述】:
这是我上一个问题的后续问题。
Run a function without a parameter but needed a variable outside of the function - PHP
我收到了这个答案
function foo($arg1 = null, $arg2 = null) {
// if they are not set retrieve from a session
$arg1 = ($arg1 !== null) ? $arg1 : $_SESSION['arg1'];
// rinse repeat.
}
所以我想,也许我可以通过防止在每个函数上调用相同的变量来减少代码行。
我想出了这个。
function foo($arg1 = $_SESSION['user_id'], $arg2 = $_SESSION['campaign_id']) {
//do something
}
很遗憾,我收到了这个错误。
Parse error: syntax error, unexpected T_VARIABLE
这是有原因的吗?我只是用一个有值的变量替换了 null 。
有没有什么方法可以给一个参数已经有值的函数赋值,而不是给一个空值赋值?
附言
我正在尝试使用echo $campaign->getName()输出数据,所以调用函数时没有提供参数。
所以我试图调用类似这样的函数
function foo($arg1 = $_SESSION['user_id'], $arg2 = $_SESSION['campaign_id']) {
//do something
}
如果有任何方法可以做到这一点,而无需一遍又一遍地调用同一个变量。
任何帮助将不胜感激。 :)
【问题讨论】:
-
请链接到您之前的问题,因为我们不知道您在说什么。 (edit你的问题)
-
你去,已经把它放进去了。:D
-
在特定情况下,例如
$_SESSION['user_id']- 即在脚本执行期间应保持不变的值 - 您可以将其定义为常量define('APP_USER_ID', $_SESSION['user_id']);然后常量可以用作默认值function foo($arg = APP_USER_ID) {}。虽然这似乎是一个有吸引力的选择(并且在现实世界中是相当普遍的做法),但出于依赖全局状态的原因,不建议这样做,如下面的几个答案所述。
标签: php function parameters null variable-assignment