Tenho as seguintes classes em arquivos distintos:
("..." representa o restante do código não necessário para este post, tal como a definição do namespace e autoload)
Member.php:
...
class Member extends Account
{
function __construct()
{
$this->money = 900;
}
}
Account.php:
...
abstract class Account
{
protected string $ownerName;
protected string $money;
private static int $accountNumber;
public function __construct(string $ownerName)
{
$this->ownerName = $ownerName;
self::$accountNumber += 1;
}
public function getOwnerName(): string
{
return $this->ownerName;
}
...
}
main.php (arquivo a ser executado):
...
$novaConta = new Member("Diego Ribeiro");
var_dump($novaConta);
Ao debugar a variavel novaConta percebo que ownerName não foi inicializado. Pelo que entendi durante o curso uma classe filha tem todos os métodos e atributos da classe pai, porém ao instanciar uma nova classe com $novaConta = new Member("Diego Ribeiro");
eu esperava que "Diego Ribeiro" fosse atribuido a ownerName, passando primeiramente pelo construtor da classe pai.
Como eu poderia resolver isso? Uma alternativa seria receber o parametro no construtor de Member, porém isso acabaria me fazendo repetir o mesmo trecho de código para cada nova classe filha de Account.