将变量作为参数默认值的 PHP 函数

2022-08-30 13:38:39

默认情况下,PHP 函数使用变量。有时,应在未设置的情况下调用此函数。在这种情况下,我将所需的变量定义为参数,例如:$_GET$_GETactionOne(234)

为了获得抽象代码,我尝试了如下方法:

function actionOne($id=$_GET["ID"])

这会导致错误

解析错误:语法错误、意外T_VARIABLE

是否不可能使用变量定义默认参数?

编辑

它被称为“直接”来自使用框架Yii的URL。通过处理这个函数之外的变量,我必须在一个中心组件上这样做(即使它是一个简单,无关紧要的函数),否则我必须改变框架,这是我不喜欢做的事情。actionOne$_GET

另一种方法是虚拟函数(类似于pre-function),它由URL调用。此“虚拟”函数处理变量问题并调用 .actionOne($id)


答案 1

否,这是不可能的,如函数参数手册页上所述:

默认值必须是常量表达式,而不是(例如)变量、类成员或函数调用。

相反,您可以简单地将 null 作为默认值传递,然后在函数中更新它...

function actionOne($id=null) {
    $id = isset($id) ? $id : $_GET['ID'];
    ....
}

...或者(更好的是),当你没有要传入的特定ID时,只需提供$_GET['ID']作为参数值(即:在函数外部处理它。


答案 2
function actionOne( $id=null ) {
    if ($id === null) $id = $_GET['ID'];
}

但是,我可能会在函数之外执行此操作:

// This line would change, its just a for instance
$id = $id ? $id : $_GET['id'];
actionOne( $id );

推荐