You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP类动态调用方法报错:Undefined property: Test::$todayDate() 求解

问题解决:Undefined property: Test::$todayDate()

错误原因很明确:你把方法名写成了带括号的字符串"todayDate()",PHP会将这个带括号的字符串当作属性名去查找,但你的类里并没有名为todayDate()的属性,因此触发了"Undefined property"错误。

要动态调用todayDate()方法并获取返回值,有几种可行的方式:

方式一:修正方法名字符串(最直接)

把变量里的括号去掉,只保留纯方法名,然后通过可变方法名的方式调用:

public function todayDate() 
{
    return date("Y-m-d");
} 

public function test_func()
{ 
    $func = "todayDate"; // 仅保留方法名,去掉括号
    echo $this->$func(); // 动态调用方法
}

方式二:使用call_user_func函数

通过PHP的回调函数工具call_user_func来调用类方法:

public function test_func()
{ 
    $func = "todayDate";
    echo call_user_func([$this, $func]); // 传入类实例和方法名组成的数组
}

方式三:处理带括号的方法名字符串

如果你的$func变量是从其他地方获取的、必须保留带括号的格式,可以先去掉括号再调用:

public function test_func()
{ 
    $func = "todayDate()";
    $funcName = rtrim($func, "()"); // 移除字符串末尾的括号
    echo $this->$funcName();
}

核心逻辑:PHP动态调用方法时,可变变量中只需要存储不带括号的方法名字符串,括号是方法调用的语法符号,不属于方法名本身。

内容的提问来源于stack exchange,提问作者Khaldoon Mansour

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 13:09:58