我有这段代码:
class foo
{
public function __construct
(
$bar[var1] = 0,
$bar[var2] = 0,
$bar[var3] = 0
)
{
/* do something */
}
}
我收到此错误:
解析错误:第5行 $ this 中的语法错误,意外'[',期待')'
我不知道什么是错的。
修改
我想像这样初始化类:$instance = new foo($bar)
($ bar是一个数组)
因为类会期望很多参数,所以我可以轻松地从构造函数返回数组。 如果这不是一个好主意,请告诉我。
答案 0 :(得分:8)
为什么要尝试在函数参数定义中创建数组?这没有任何意义,你不能这样做。
如果您希望$bar
成为参数但确保存在某些值(即默认值),请执行以下操作:
public function __construct($bar)
{
if(!isset($bar['var1'])) $bar['var1'] = 0;
if(!isset($bar['var2'])) $bar['var2'] = 0;
if(!isset($bar['var3'])) $bar['var3'] = 0;
/* do something */
}
或以更紧凑的方式:
public function __construct($bar)
{
$bar = array_merge(array('var1' => 0, 'var2' => 0, 'var3' => 0), $bar);
/* do something */
}
答案 1 :(得分:1)
class foo
{
public function __construct($bar = array())
{
$bar += array(
"var1" => 0,
"var2" => 0,
"var3" => 0
);
/* do something */
}
}
答案 2 :(得分:1)
class foo
{
public function __construct()
{
$bar = func_get_args();
}
}
答案 3 :(得分:1)
你不能这样做你应该整个数组传递。还必须引用密钥
public function __construct($bar)
{
$bar['var1'] = 0;
$bar['var2'] = 0;
$bar['var3'] = 0;
/* do something */
}
答案 4 :(得分:1)
class foo
{
public function __construct($bar = array('var'=>0, 'var2'=>0, 'var3'=>0))
{
var_dump($bar);
}
}