Статическая :: staticFunctionName ()

Я знаю, что такое self::staticFunctionName() и parent::staticFunctionName() и как они отличаются друг от друга и из $this->functionName .

Но что такое static::staticFunctionName() ?

Solutions Collecting From Web of "Статическая :: staticFunctionName ()"

Это ключевое слово, используемое в PHP 5.3+ для вызова поздних статических привязок.
Прочтите все об этом в руководстве: http://php.net/manual/en/language.oop5.late-static-bindings.php


Таким образом, static::foo() работает как динамическое 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 решает эту проблему:

 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 как ключевое слово для этого поведения немного сбивает с толку, так как это все. 🙂