Windows10 XAMPP3.2.4下PHP7.4.5调用类方法报未定义函数如何解决?
错误根因
你的报错是PHP语法使用错误导致的,和Apache、XAMPP环境、类权限/作用域都无关。
PHP中调用实例对象的方法/属性需使用箭头运算符->,而非你使用的点号.:PHP的点号是字符串拼接运算符,你编写的$np.setParams(1,2,1910,true)会被PHP解析为「将$np变量的取值与全局函数setParams()的返回值做字符串拼接」,由于你没有定义全局的setParams()函数,因此抛出未定义函数的报错。
修复方案
将代码第34行的调用语句替换为:
$np->setParams(1,2,1910,true);
修复后完整可运行代码如下:
<?php phpinfo(); abstract class Person { var $name; } class NaturalPerson extends Person { var $dayOfBirth; var $MonthOfBirth; var $YearOfBirth; var $male; public function setParams ($d, $m, $y, $ml) { $this->dayOfBirth = $d; $this->MonthOfBirth = $m; $this->YearOfBirth = $y; $this->male = $ml; } } $np = new NaturalPerson(); $np->setParams(1,2,1910,true); echo "<br>\n"; var_dump($np); ?>
同类报错通用排查思路
如果后续遇到类似Call to undefined function报错,可按以下顺序排查:
- 确认调用语法是否正确:PHP实例成员调用用
->,静态成员调用用::,不要和其他编程语言的点调用语法混淆 - 确认方法名拼写、大小写和类中定义的完全一致
- 确认类已被正确引入、实例化,若使用命名空间需确保类名的命名空间前缀正确
- 排查方法的作用域:private/protected方法不能在类外部直接调用
内容的提问来源于stack exchange,提问作者BorisNY
相关产品推荐
相关产品推荐

