я получу те же результаты?
На самом деле, нет. Хотя я не знаю обходного пути для 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