在 PHP 类中,我有一个成员计数器:private $counter = [];我想获取此数组的长度并将其作为方法参数的默认值传递:public function myMethod($n = $counter)){}我努力了:public function myMethod($n = count($this->$counter))){ // not working}public function myMethod($n = count($this->counter))){ // not working}public function myMethod($n = array('MyClass', count($counter)))){ // still not working}public function myMethod($n = $this->methodReturningCounterLength()){ // not working}甚至有可能我正在尝试做的事情吗?
3 回答
红糖糍粑
TA贡献1815条经验 获得超6个赞
我相信您尝试做的事情是不可能的,PHP 文档说明了默认参数值:
默认值必须是常量表达式,而不是(例如)变量、类成员或函数调用。
所以我认为最好的方法是:
public function myMethod($n = null){
if ($n === null) {
$n = count($this->counter);
}
}
潇潇雨雨
TA贡献1833条经验 获得超4个赞
您不能将变量、属性或函数调用用作默认参数值。它必须是一个常数值。
所以你需要做的是这样的:
public function myMethod($n = null){
if (is_null($n)) {
$n = count($this->counter);
}
// echo($n);
}
蝴蝶不菲
TA贡献1810条经验 获得超4个赞
根据我的想法,实现这一目标的最佳方法如下
class A{
private $counter = [];
public function foo($length=null){
$length = empty($length) ? count($this->counter) : $length;
echo $length;
}
}
$ob = new A();
$ob->foo();
- 3 回答
- 0 关注
- 114 浏览
添加回答
举报
0/150
提交
取消