PHP:函数参数的动态默认值

时间:2012-04-26 13:03:23

标签: php function parameters default

我想在Config类中保留选项,因此在更改(例如)MySQL数据库时,我不需要更改几个(相同的)值。到目前为止,我正在访问以下选项:

Config::$credentials["mysql"]["username"]

现在,我想为一个函数设置一个“动态”默认值,但PHP不会让我这样做

public function get_single_db_entry($uid, $table=Config::$credentials["mysql"]["table"]) {
    // logic here...
}

我想知道的是:有没有机会保持默认参数的值是动态的?

2 个答案:

答案 0 :(得分:2)

我认为这种方式不可能。但是你可以为它渲染一个静态默认值,并且在第一行中,如果调用者没有改变该值,你只需分配动态值。

public function get_single_db_entry($uid, $table=0) {
    if $table == 0 
      $table = Config::$credentials["mysql"]["table"]
    // logic here...
}

有点解决方法,但应该可行。

答案 1 :(得分:0)

在这种情况下,您可以使用我的小型库ValueResolver,例如:

$table = ValueResolver::resolve($table, Config::$credentials["mysql"]["table"]);

并且不要忘记使用命名空间use LapaLabs\ValueResolver\Resolver\ValueResolver;

还可以进行类型转换,例如,如果您的变量的值应该是integer,那么请使用:

$id = ValueResolver::toInteger('6 apples', 1); // returns 6
$id = ValueResolver::toInteger('There are no apples', 1); // returns 1 (used default value)

查看docs了解更多示例