是否可以将类成员值传递给类方法?

在 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

}

甚至有可能我正在尝试做的事情吗?


慕田峪4524236
浏览 115回答 3
3回答

红糖糍粑

我相信您尝试做的事情是不可能的,PHP 文档说明了默认参数值:默认值必须是常量表达式,而不是(例如)变量、类成员或函数调用。所以我认为最好的方法是:public function myMethod($n = null){    if ($n === null) {        $n = count($this->counter);    }}

潇潇雨雨

您不能将变量、属性或函数调用用作默认参数值。它必须是一个常数值。所以你需要做的是这样的: public function myMethod($n = null){        if (is_null($n)) {            $n = count($this->counter);        }        // echo($n);    }

蝴蝶不菲

根据我的想法,实现这一目标的最佳方法如下class A{  private $counter = [];  public function foo($length=null){    $length = empty($length) ? count($this->counter) : $length;    echo $length;  }}$ob = new A();$ob->foo();
打开App,查看更多内容
随时随地看视频慕课网APP