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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 04:45:05