получу ли я такие же результаты?
Не совсем.Однако я не знаю обходного пути для PHP 5.2.
В чем разница между new self
и new static
?
self
относится ктот же класс, в котором на самом деле написано ключевое слово new
.
static
в поздних статических привязках PHP 5.3 относится к любому классу в иерархии, в которой вы вызывали метод.
В следующем примере B
наследует оба метода от A
.Вызов self
связан с A
, поскольку он определен в реализации A
первого метода, тогда как 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