<?php
class A
{
public function a($at)
{
echo $at;
}
public function b()
{
echo 'Test';
}
}
$ac = new A();
$ac->b();
我收到一个错误:Uncaught ArgumentCountError: Too few arguments to function A::a(), 0 passed
我不称这种方法...
这里的问题部分是php。
显然,在解析时,解析器将类名转换为小写,结果证明调用了构造函数。在早期版本的PHP中,构造函数被声明为与类本身同名。然后它变得过时了,建议使用
__construct.结果,现在在当前代码中,该方法
a被理解为构造函数。因此错误。如果名称不同,错误就会消失。自 8.0 版以来,此问题也已得到修复。
如果查看版本
PHP 7.4.x和更旧的版本,那么,除了这个错误之外,还会显示以下内容:这意味着这个版本会将方法
a()视为类构造函数A——是的,大小写在这里并不重要。以前,PHP 5.3.3在尝试显示此方法时,会显示有关即将删除此功能的警告,这是在 中完成的PHP 8.x。我提供两种选择:
PHP 8.x;