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

PHP匿名类使用疑问:直接传参报未定义变量求解

PHP匿名类传参报错原因解析

你第一个示例能正常运行,是因为先把匿名类实例赋值给了$object变量,后续调用方法时变量明确存在,逻辑完全合法。

第二个示例出现“未定义变量”错误,和匿名类本身无关,问题出在$helper这个变量——你直接调用$helper->sayHello(),但代码里根本没定义并初始化$helper(比如没有执行$helper = new 对应类名();这类语句),PHP会判定$helper是未定义变量,从而抛出错误。

匿名类实例直接作为函数参数的写法是完全合法的,只要确保上下文里的变量都已正确定义。比如补充$helper的定义后,代码就能正常运行:

// 先定义Helper类
class Helper {
    public function sayHello($obj) {
        echo $obj->hello('PHP');
    }
}

// 初始化$helper变量
$helper = new Helper();

// 匿名类实例作为参数传入,正常执行
$helper->sayHello(new class {
    public function hello($message) {
        return "Hello $message";
    }
});

内容的提问来源于stack exchange,提问作者Shakeel Ahmad

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 10:25:25