我想可能没有任何区别,但个人偏好,但是当阅读各种
PHP代码时,我遇到了两种方法来访问方法类.
有什么不同:
class Myclass { public static $foo; public static function myMethod () { // between: self::$foo; // and MyClass::$foo; } }
(注:初始版本说没有区别,实际上有)
原文链接:https://www.f2er.com/php/139973.html确实有很小的差异. 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