我想可能没有任何差别,但个人偏好,但在阅读各种PHP代码时,我遇到了两种方法来访问方法类.
什么是区别:
class Myclass
{
public static $foo;
public static function myMethod ()
{
// between:
self::$foo;
// and
MyClass::$foo;
}
}
Run Code Online (Sandbox Code Playgroud)
Art*_*cto 35
(注意:初始版本说没有区别.实际上有)
确实存在很小的差异.self::转发静态呼叫,而className::不是.这仅适用于PHP 5.3+中的后期静态绑定.
在静态调用中,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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6881 次 |
| 最近记录: |