PHP默认函数参数为T_VARIABLE?

时间:2010-02-08 18:48:15

标签: php function arguments

我正在尝试提供一个成员变量作为类方法的默认值。

我知道将变量用作非类函数的默认值是不可能的,但似乎应该有一种方法可以在类中执行此操作。

必须有办法做到这一点 - 也许我的语法错误了:

class test{
  private $test = '';

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

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

但这会引发错误,例如:

  

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

有什么想法吗?

2 个答案:

答案 0 :(得分:10)

来自manual: -

  

默认值必须是常量   表达,而不是(例如)a   变量,类成员或函数   调用

我可能会做类似的事情: -

<?php

class Test {

    public function __construct() {

        $this->test = "whatever";

    }

    public function getTest($var=NULL) {

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

        echo $var;
    }
}
?>

答案 1 :(得分:3)

我相信你只能在该语法中使用常量(字符串,数字等)(但我可能错了)。

我建议这个替代方案:

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