为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
慕田峪4524236 2022-01-14 16:58:33
在 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);

    }

}


查看完整回答
反对 回复 2022-01-14
?
潇潇雨雨

TA贡献1833条经验 获得超4个赞

您不能将变量、属性或函数调用用作默认参数值。它必须是一个常数值。


所以你需要做的是这样的:


 public function myMethod($n = null){

        if (is_null($n)) {

            $n = count($this->counter);

        }

        // echo($n);

    }


查看完整回答
反对 回复 2022-01-14
?
蝴蝶不菲

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();


查看完整回答
反对 回复 2022-01-14
  • 3 回答
  • 0 关注
  • 114 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信