I know what
self::staticFunctionName()
and
parent::staticFunctionName()
are, and how they are different
from each other and from
$this->functionName
.
But
what is static::staticFunctionName()
?
Answer
It's the keyword used in PHP 5.3+ to invoke
late static bindings.
Read all about it in the manual: href="http://php.net/manual/en/language.oop5.late-static-bindings.php"
rel="noreferrer">http://php.net/manual/en/language.oop5.late-static-bindings.php
/>
In summary,
static::foo()
works like a dynamic
self::foo()
.
class
A {
static function foo() {
// This will be executed.
}
static function bar() {
self::foo();
}
}
class B extends A {
static
function foo() {
// This will not be executed.
// The above
self::foo() refers to A::foo().
}
}
B::bar();
static
solves this problem:
class A
{
static function foo() {
// This is overridden in the child
class.
}
static function bar() {
static::foo();
}
}
class B extends
A {
static function foo() {
// This will be executed.
// static::foo() is bound late.
}
}
B::bar();
static
as a keyword for this behavior is kind of confusing, since it's all but.
:)
No comments:
Post a Comment