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


PHP: dynamic default value for functions' parameters

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

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

现在,我想为函数设置一个"动态"默认值,但 PHP 不允许我做类似的事情

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

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

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

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

有点解决方法,但它应该可以工作。

在这种情况下,您可以使用我的小库 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)

查看文档以获取更多示例

相关文章: