我想可能没有什么不同,但个人偏好,但当我阅读各种PHP代码时,我遇到了两种方式访问方法类。
不同之处是:
class Myclass
{
public static $foo;
public static function myMethod ()
{
// between:
self::$foo;
// and
MyClass::$foo;
}
}发布于 2010-08-13 22:31:21
(注:最初版本说没有差别。)(其实有)
确实有一个小小的差别。self::转发静态调用,而className::不转发。这只对PHP5.3+中的后期静态绑定很重要。
在静态调用中,PHP会记住最初调用的类。使用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发布于 2010-08-13 22:34:20
对于self,您可以在类中使用它,并与"MyClass“一起使用它,就像您已经使用的那样,您可以在外部引用它:
$instance = new Myclass();
$variable = $instance::$foohttps://stackoverflow.com/questions/3481085
复制相似问题