Saturday 30 December 2017

php - static::staticFunctionName()

itemprop="text">

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

php - file_get_contents shows unexpected output while reading a file

I want to output an inline jpg image as a base64 encoded string, however when I do this : $contents = file_get_contents($filename); print &q...