Невозможно загрузить класс com.squareup.javapoet.TypeName.

Я получу те же результаты?

Не совсем. Я не знаю об обходном пути для 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
0
задан Neglected Sanity 16 January 2019 в 00:41
поделиться