我使用Laravel框架。我还有一个名为my.php
的文件,其中包含我所有网站的配置。它看起来像:
<?php
return [
'server' => [
'root_path' => 'Z:\\',
],
/*
* Website Status:
* 0 = debugging mode
* 1 = using mode
*/
'status' => [
'mode' => 0,
],
];
注意my.php
文件已进入config
文件夹。所以我可以使用config()
函数来访问该文件的任何值:
echo config(my.status.mode);
//=>0
我的问题:我需要使用config(my.status.mode)
作为函数的参数默认值。像这样:
public function ( $m = config(my.status.mode) ){
// do stuff
}
如你所知,它抛出:
语法错误,意外'(',期待')'
我的IDE也会抛出:
不允许表达式作为参数默认值
现在我正在寻找一种方法来实现它。我可以这样做:
public function ( $m = null ){
$m = is_null ( $m ) ? config(my.status.mode) : $m;
// do stuff
}
但那不干净..还有更好的选择吗?
答案 0 :(得分:0)
这是不可能的,但如果您在PHP 7中寻找更精简的解决方案,则可以使用新的??
运算符:
echo $m ?? config('my.status.mode');
作为替代,you can create your own global Laravel helper,config()
帮助器的包装器,它将检查变量为null并将从config返回结果:
$m = default('status.mode', $m);
助手可能如下所示:
if (! function_exists('default')) {
function default($config, $value)
{
return is_null($value) ? config('my.'.$config) : $value;
}
}
此方法的一个优点是您可以随时向此帮助程序添加一些功能。例如,您可以将配置值转换为当前语言,而无需在控制器或模型中执行此操作。