当前位置:  开发笔记 > 编程语言 > 正文

从A类的B类(扩展A类)调用静态方法

如何解决《从A类的B类(扩展A类)调用静态方法》经验,为你挑选了1个好方法。

在练习测试中有一个有趣的问题,我不明白答案.以下代码的输出是什么:

name;
    }
}

class Bar extends Foo {
    public $name = 'John';

    public function getName() {
        Foo::getName();
    }
}

$a = new Bar;
$a->getName();
?>

最初,我认为这会产生错误,因为静态方法不能引用$ this(至少在PHP5中).我自己测试了这个,它实际输出约翰.

我添加了Foo :: getName(); 在脚本的末尾,确实得到了我期待的错误.那么,当你从一个扩展你要调用的类的类中调用静态方法时会发生什么变化?

谁会介意详细解释这里发生了什么?



1> Paul Dixon..:

Foo :: getName()使用较旧的PHP4样式的作用域解析运算符来允许调用重写的方法.

在PHP5中,您将使用parent :: getName()

如果您想扩展而不是完全覆盖基类的行为,这很有用,例如,这可能会使它更清晰

class Bar extends Foo {
    public $name = 'John';

    public function getName() {
        echo "My name is ";
        parent::getName();
    }
}

推荐阅读
贾志军
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有