【问题标题】:How to set a PHP function's param to a variable as the default value [duplicate]如何将PHP函数的参数设置为变量作为默认值[重复]
【发布时间】:2012-05-24 04:13:38
【问题描述】:

所以我希望能够根据变量是真还是假来打开或关闭某个功能。该函数仍会执行,但由于变量为 false,它不会执行它的例程。

类似的东西

$testTF = "T";

function Test($test=$testTF){
echo $test;
}

Test("Go");

这当然行不通,但我想知道是否有办法让它按预期工作。这个函数在脚本中随处可见,并且需要在某些地方,所以我不能将它们全部放在一个 if 语句中,因为它会破坏它们。

我知道您可以在每次调用时将该值作为标志传递,但我正在寻找一种方法使其假定该值作为默认值,除非另有说明。也许我在这里看的是全局变量,但有人告诉我这很危险。

谢谢

【问题讨论】:

  • @Dagon:哈哈……(你不是认真的吧?)
  • 我不是 PHP 开发人员,但逻辑比较不是 $test=$testTF 应该是 $test==$testTF
  • 参数中的 = 告诉它如果未指定则将其设置为某个默认值
  • @xbonez 设置默认值,这是我读到的他想要的。
  • @Dagon:那么,如果默认值发生变化,您希望他去更改他使用的每个地方的值吗?它违背了 DRY 的原则,容易出错。此外,他可能会从数据库中提取值或通过用户输入获取值

标签: php function variables


【解决方案1】:

你能做到吗?

$testTF = "T";

function Test($test=NULL){
    if ($test ===NULL) {
        global $testTF;
        $test = $testTF;
    }
    echo $test;
}

Test("Go");

或者,如果您反对使用全局变量,您可以将默认值封装在一个函数中,如下所示:

function Test($test=NULL){
    if ($test ===NULL) {        
        $test = getDefault();
    }
    echo $test;
}

Test("Go");

function getDefault(){
    //pull default value from wherever
    $testDefault = 'T';
    return $testDefault;
}

【讨论】:

  • 嘿,谢谢,但问题是它在函数中看不到 testTF var。但它不会崩溃:)
  • @user1159454:您肯定可以在函数中看到 $testF。是在同一个文件中定义的,还是说要通过各种文件来访问变量?
  • 是的,都是同一个文件。在 PHP 中,我知道您看不到未在其中设置或作为参数传递的变量。我知道在 javascript 中可以工作
  • @user1159454:您必须将$testTF 声明为全局优先:global $testTF; 或使用$GLOBALS['testTF']
  • @user1159454:哦,我现在明白了。见编辑。
【解决方案2】:

简短的回答是您想要这样做的方式是不可能的,但这也是: PHP function with variable as default value for a parameter

有你想要的答案:)

【讨论】:

    【解决方案3】:

    你也可以用闭包来做到这一点:

    $testTF = 'T';
    
    $Test = function ($test = null) use ($testTF){
        if ($test === null) $test = $testTF;
        echo $test;
    };
    
    $Test(); //T
    $Test(null); //T
    $Test('Go'); //Go
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-29
      • 2011-07-31
      • 1970-01-01
      • 1970-01-01
      • 2023-03-11
      • 1970-01-01
      • 2013-01-01
      • 2015-03-31
      相关资源
      最近更新 更多