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

前端之家收集整理的这篇文章主要介绍了self :: vs className :: inside static className metods in PHP前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想可能没有任何区别,但个人偏好,但是当阅读各种 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
原文链接:https://www.f2er.com/php/139973.html

猜你在找的PHP相关文章