я отримаю однакові результати?
Не зовсім. Я не знаю, як вирішити PHP 5.2.
У чому різниця між new self
і new static
?
self
відноситься до того ж класу, в якому new
насправді написано ключове слово.
static
у пізніх статичних прив'язках PHP 5.3 посилається на будь-який клас в ієрархії, на який ви назвали метод.
У наступному прикладі B
успадковується обидва методи від A
. self
Виклик пов'язаний з , A
тому що це визначено в A
реалізації «S першого способу, в той час як static
прив'язаний до званого класу (також див get_called_class()
).
class A {
public static function get_self() {
return new self();
}
public static function get_static() {
return new static();
}
}
class B extends A {}
echo get_class(B::get_self()); // A
echo get_class(B::get_static()); // B
echo get_class(A::get_self()); // A
echo get_class(A::get_static()); // A