我不理解在PHP中调用父方法的概念.
父方法不是静态的,但它是静态调用的 – 通常PHP会抛出错误/警告.
问题是,这是来自PHP的怪癖,还是它应该如何在OOP中?
以php.net为例:
class A {
function example() {
echo "I am A::example() and provide basic functionality.
\n";
}
}
class B extends A {
function example() {
echo "I am B::example() and provide additional functionality.
\n";
parent::example();
}
}
$b = new B;
// This will call B::example(), which will in turn call A::example().
$b->example();
?>
In PHP 5, calling non-static methods statically generates an E_STRICT
level warning.
解决方法:
>静态方法旨在与类的所有实例相关,而不是与任何特定实例相关. – 实际上这种方法与父类的所有子项相关.
>即使尚未存在类的实例,也可以调用静态方法. – 再次,您永远不会创建父类的实例来调用该方法.
所以我们可以把这个论点作为PHP的借口.顺便说一句,在C中它以相同的方式完成.
但是还有其他语言,就像你说的那样.例如,在JAVA中,在C#中称为super.printMethod();的父方法,就像base.printMethod()一样.
因此在PHP中可能会为解析器的简单性做好准备,因为对于这样的调用parent-> printMethod(),它们需要特定的边缘情况.
标签:php,oop,parent
来源: https://codeday.me/bug/20190623/1267358.html