gpt4 book ai didi

PHP:从父级调用静态方法时出现 "Call to undefined method"错误

转载 作者:可可西里 更新时间:2023-10-31 22:59:46 25 4
gpt4 key购买 nike

如果两者都是静态的,从父类调用子类方法的正确方法是什么?

当我使用静态类时它返回错误“调用未定义的方法 A::multi()”,但是当我使用非静态方法时没有问题,例如:

//-------------- STATIC ------------------
class A {
public static function calc($a,$b) {
return self::multi($a, $b);
}
}
class B extends A {
public static function multi($a, $b) {
return $a*$b;
}
}
echo B::calc(3,4); //ERROR!!

//-------------- NON-STATIC ----------------
class C {
public function calc($a,$b) {
return $this->multi($a, $b);
}
}
class D extends C {
public function multi($a, $b) {
return $a*$b;
}
}
$D = new D();
echo $D->calc(3,4); // Returns: 12

有没有办法在不知道其类名的情况下调用子静态方法?

最佳答案

只有在 PHP 5.3 和更新版本中才有可能,使用 late static bindings ,其中 PHP 5.3 能够访问子类中的静态成员,而不是 self 引用的任何类,因为它是在运行时而不是编译时解析的。

不幸的是,我认为在 PHP 5.2 及更早版本中没有针对此问题的解决方案。

关于PHP:从父级调用静态方法时出现 "Call to undefined method"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3107174/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com