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 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
