默认情况下,PHP 函数使用 $_GET
变量。有时在未设置$_GET
的情况下应调用此函数。在这种情况下,我会将所需的变量定义为参数,例如:actionOne(234)
为了获得抽象代码,我尝试了这样的事情:
function actionOne($id=$_GET["ID"])
导致错误:
Parse error: syntax error, unexpected T_VARIABLE
难道不能用变量来定义默认参数吗?
编辑
actionOne
使用框架 Yii 从 URL 中“直接”调用。通过处理此函数外部的 $_GET
变量,我必须在中央组件上执行此操作(即使它是一个简单、无关紧要的函数),或者我必须更改框架,这是我不喜欢的做。
执行此操作的另一种方法是通过 URL 调用虚拟函数(类似于前置函数)。这个“虚拟”函数处理变量问题并调用 actionOne($id)
。
最佳答案
不,这是不可能的,正如 Function arguments manual page 中所述:
The default value must be a constant expression, not (for example) a variable, a class member or a function call.
相反,您可以简单地将 null 作为默认值传递并在您的函数中更新它...
function actionOne($id=null) {
$id = isset($id) ? $id : $_GET['ID'];
....
}
...或者(更好),当您没有要传入的特定 ID 时,只需提供 $_GET['ID'] 作为参数值。(即:在函数外部处理。)
关于将变量作为参数的默认值的 PHP 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5859376/