php中method,php – parent :: method() – 调用非静态方法

我不理解在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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值