Acabei implementando porém em outro exemplo apenas para exercitar
<?php
namespace Poo\heranca\model;
use Poo\heranca\model\{Marca, Carro};
require_once "Carro.php";
require_once "Marca.php";
/*
* Class Sedan
# @package Poo\heranca\model
* @property-read string $motor
*
*/
class Sedan extends Carro
{
private string $motor;
private float $velocidadeMax;
private Marca $marca;
public function __construct($rodas, $portas, string $motor, float $velocidadeMax, Marca $marca){
parent::__construct($rodas, $portas);
$this->motor = $motor;
$this->velocidadeMax = $velocidadeMax;
$this->marca = $marca;
}
public function getMotor(): string
{
return $this->motor;
}
public function setMotor($motor): string
{
return $this->motor = $motor;
}
public function __get(string $nomeAtributo)
{
$metodo = "get" . ucfirst($nomeAtributo);
return $this->$metodo();
}
public function __toString(): string
{
return "o Carro tem o Motor {$this->motor}, e sua velocidade maxima é de: {$this->velocidadeMax} km/h";
}
public function __set($alterarAtributo, $atributo): void
{
$metodo = "set" . ucfirst($alterarAtributo);
$this->$metodo($atributo);
}
}
echo $Sedan1->motor = "water";