С php 5.3:
Использование static::MY_CONST
Подробнее о static
В этом случае ключевое слово static
является ссылкой на фактически вызываемый класс.
Это иллюстрирует разницу между static $var
, static::$var
и self::$var
:
class Base {
const VALUE = 'base';
static function testSelf() {
// Output is always 'base', because `self::` is always class Base
return self::VALUE;
}
static function testStatic() {
// Output is variable: `static::` is a reference to the called class.
return static::VALUE;
}
}
class Child extends Base {
const VALUE = 'child';
}
echo Base::testStatic(); // output: base
echo Base::testSelf(); // output: base
echo Child::testStatic(); // output: child
echo Child::testSelf(); // output: base
Также обратите внимание, что ключевое слово static
имеет два совершенно разных значения:
class StaticDemo {
static function demo() {
// Type 1: `static` defines a static variable.
static $Var = 'bar';
// Type 2: `static::` is a reference to the called class.
return static::VALUE;
}
}