class Transport{
public static $model = 'transport';
public static function getModel() {
return self::$model;
}
}
class Car extends Transport{
public static $model = 'car';
}
echo Car::getModel(); // 'transport'
Слово «self», в строке
return self::$model;
указывает на текущий класс, поэтому в результате получаем значение ‘transport’, этот механизм еще называется «Ранним статическим связыванием».
class Transport{
public static $model = 'transport';
public static function getModel() {
return static::$model;
}
}
class Car extends Transport{
public static $model = 'car';
}
echo Car::getModel(); // 'car'
Если слово «self» заменить на «static», то мы получим «позднее статическое связывание», т.е. связь будет установлена с тем классом, который вызывает данный код, в результате получим значение «car».