加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > PHP > 正文

self :: vs className :: inside static className metods in PH

发布时间:2020-05-25 09:49:47 所属栏目:PHP 来源:互联网
导读:我想可能没有任何区别,但个人偏好,但是当阅读各种 PHP代码时,我遇到了两种方法来访问方法类. 有什么不同: class Myclass{ public static $foo; public static function myMethod () { // between: self::$foo; // and

我想可能没有任何区别,但个人偏好,但是当阅读各种 PHP代码时,我遇到了两种方法来访问方法类.

有什么不同:

class Myclass
{
    public static $foo;

    public static function myMethod ()
    {
        // between:
        self::$foo;
        // and
        MyClass::$foo;
    }
}
(注:初始版本说没有区别,实际上有)

确实有很小的差异. self :: forward静态调用,而className ::不.这只适用于PHP 5.3中的late static bindings.

在静态调用中,PHP 5.3记住了最初调用的类.使用className ::使PHP“忘记”此值(即将其重置为className),而self ::保留它.考虑:

<?php
class A {
    static function foo() {
        echo get_called_class();
    }
}
class B extends A {
    static function bar() {
        self::foo();
    }
    static function baz() {
        B::foo();
    }
}
class C extends B {}

C::bar(); //C
C::baz(); //B

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读