首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP: self::vs parent::with extends

PHP: self::vs parent::with extends
EN

Stack Overflow用户
提问于 2014-01-03 00:11:42
回答 2查看 21.7K关注 0票数 26

我想知道当静态子类扩展静态父类时,使用self::和parent::有什么不同。

代码语言:javascript
复制
class Parent {

    public static function foo() {
       echo 'foo';
    }
}

class Child extends Parent {

    public static function func() {
       self::foo();
    }

    public static function func2() {
       parent::foo();
    }
}

func()和func2()之间有什么区别吗?如果有,那是什么呢?

谢谢

问候

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-01-03 00:27:07

代码语言:javascript
复制
                Child has foo()     Parent has foo()
self::foo()        YES                   YES               Child foo() is executed
parent::foo()      YES                   YES               Parent foo() is executed
self::foo()        YES                   NO                Child foo() is executed
parent::foo()      YES                   NO                ERROR
self::foo()        NO                    YES               Parent foo() is executed
parent::foo()      NO                    YES               Parent foo() is executed
self::foo()        NO                    NO                ERROR
parent::foo()      NO                    NO                ERROR

如果您正在为它们的使用寻找正确的案例。parent允许访问继承的类,而self是对运行(静态或其他)方法所属的类的引用。

self关键字的一个常见用法是,当在PHP中使用单例模式时,self并不支持子类,而static支持New self vs. new static

parent提供了访问继承的类方法的能力,如果您需要保留一些默认功能,这通常很有用。

票数 54
EN

Stack Overflow用户

发布于 2014-01-03 00:49:48

self用于调用静态函数和操纵静态变量,这些变量是类特定的,而不是对象特定的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20886911

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档