Как статическое свойство распространяется от родительского?

Код здесь:

class A {
public static $property = 1;

public function test(){
echo self::$property;
}
}

class B extends A{
public static $property = 2;
}
$b = new B();

echo $b->test() . "\n";

Консольный журнал:

$:1

Я знаю что класс B имеет перезаписать статическое свойство.

В чем причина этого результата?

0

Решение

Когда вы добавили

`echo self::$property;`

в test() из A перезаписываете ли вы значение статической переменной в расширенном классе или нет, оно будет ссылаться на значение родительского класса, но когда вы измените его на

`echo static::$property;`

это даст значение, основанное на объекте класса.больше информации здесь

Попробуй это:
DEMO

1

Другие решения

  • self — то же самое, что $ this для статических методов / переменных, но всегда действует на определяющий класс.
  • static — то же самое, что $ this для статических методов / varialbes, но всегда действует на вызывающий класс (это называется поздней статической привязкой, которая является относительно новой функцией php

Источник: Читать статью

Если вы хотите отобразить значение из класса, из которого вы сделали объект, вы можете использовать команду ниже,

class A {
public static $property = 1;

public function test(){
echo static::$property; // changed self to static
}
}

Надеюсь, вы поняли! Благодарю.

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector