【问题标题】: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;
}
}