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
相关产品推荐
相关产品推荐

