PHP默认函数参数可以作为一个T_VARIABLE吗?

3

我想要在类方法中提供一个成员变量作为默认值。

我知道在非类函数中使用变量作为默认值是不可能的,但似乎在类内部应该有一种方法可以实现。

一定有方法可以做到这一点 - 也许我只是语法错误:

class test{
  private $test = '';

  __construct(){
    $this->test = "whatever";
  }

  function getTest($var = $this->test){
    echo $var;
  }
}

但是这会抛出一个错误,类似于:

$this->test 作为函数参数默认值是不允许的,意外的 T_VARIABLE。

有什么想法吗?

2个回答

10

手册中得知:

默认值必须是常量表达式,不能是变量、类成员或函数调用。

我可能只会像这样做:

<?php

class Test {

    public function __construct() {

        $this->test = "whatever";

    }

    public function getTest($var=NULL) {

        if (is_null($var)) {
            $var = $this->test;
        }

        echo $var;
    }
}
?>

3

我认为你只能在那种语法中使用常量(字符串、数字等),但是我可能对此有所错误。

我建议采用以下替代方案:

function getTest($var = null) {
    if (is_null($var)) {
        $var = $this->test;
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接