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

The*_*ndr 32 php variables parameters function

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

为了得到一个抽象代码,我试过这样的事情:

function actionOne($id=$_GET["ID"])
Run Code Online (Sandbox Code Playgroud)

这会导致错误:

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

是否无法通过使用变量来定义默认参数?

编辑

actionOne从一个URL使用该框架被称为"直接" 的Yii.通过处理$_GET此函数之外的变量,我必须在一个中心组件上执行此操作(即使它是一个简单,无关紧要的函数),或者我必须更改框架,我不喜欢这样做.

另一种方法可以是虚拟函数(类似于预函数),由URL调用.这个"虚拟"函数处理变量问题并调用actionOne($id).

Joh*_*ker 52

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

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

相反,你可以简单地传入null作为默认值,并在你的函数中更新它...

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

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

  • 同样,解决方案打破封装,检查应该在函数外部发生. (2认同)