【问题标题】:PHP default function argument as a T_VARIABLE?PHP默认函数参数为T_VARIABLE?
【发布时间】:2026-01-10 18:20:05
【问题描述】:

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

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

一定有办法做到这一点——也许我只是语法错误:

class test{
  private $test = '';

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

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

但这会引发错误,例如:

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

有什么想法吗?

【问题讨论】:

    标签: php function arguments


    【解决方案1】:

    来自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;
        }
    }
    ?>
    

    【讨论】:

      【解决方案2】:

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

      我建议这个替代方案:

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

      【讨论】: