PHP function with variable as default value for a parameter

2021/01/31 10:41 · php ·  · 0评论

By default a PHP function uses $_GET variables. Sometimes this function should be called in an situation where $_GET is not set. In this case I will define the needed variables as parameter like: actionOne(234)

To get an abstract code I tried something like this:

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

which results in an error:

Parse error: syntax error, unexpected T_VARIABLE

Is it impossible to define an default parameter by using an variable?

Edit

actionOne从一个URL使用该框架被称为“直接”的Yii通过处理$_GET此函数之外变量,我不得不在一个中央组件上执行此操作(即使它是一个简单,无关紧要的函数),或者我不得不更改框架,这是我不希望做的。

实现此目的的另一种方法可能是伪函数(类似于预函数),该伪函数由URL调用。此“虚拟”函数处理变量问题并调用actionOne($id)

不,这是不可能的,如Function arguments手册页上所述

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

取而代之的是,您可以简单地传入null作为默认值,然后在函数中进行更新...

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

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

在调用函数之前,您应该获取该ID。检查参数是否存在会破坏封装。您应该这样做:

if (isset($_GET["ID"])
{
    $id = $_GET["ID"];
}
else
{
    //$id = something else
}

function doSomethingWithID($id)
{
    //do something
}
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 );

是的,这是不可能的。

默认值必须是静态变量:

function actionOne( $id='something') {
    //code
}

容易花生!
(可能包含小错误,错误或错别字!)

您需要一个辅助函数,该函数将递归调用主函数,但默认情况下为NULL:

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

对:

function actionOne($id) {...}
function actionOnewithID($id=NULL) {
  if (NULL==$id){actionOne($_GET["ID"]);}
  else {actionOne($id);
}

如果需要返回一个值:

function actionOne($id) {...}
function actionOnewithID($id=NULL) {
  if (NULL==$id){return(actionOne($_GET["ID"]));}
  else {return(actionOne($id));
}

我希望这有帮助!

您可以使用常量

define('ID',$_GET["ID"]);
function($id = _ID_){
    //code
}
本文地址:http://php.askforanswer.com/php-function-with-variable-as-default-value-for-a-parameter.html
文章标签: ,   ,   ,  
版权声明:本文为原创文章,版权归 admin 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!