O metodo construtor da classe pai não é chamado automaticamente. Você pode ou não chamar o metodo construtor da classe pai, vai depender do que você esta querendo fazer.
class pessoa{
private string $nome;
private string $cpf;
public function __construct($nome,$cpf){
$this->nome = $nome;
$this->cpf = $cpf;
echo "executnado cosntrutor pessoas";
}
}
class trabalhador extends pessoa{
private string $setor;
public function __construct($setor)
{
$this->setor = $setor;
}
}
$trabalhador = new trabalhador('Secretário');
var_dump($trabalhador);
//resultado do var_dump
object(trabalhador)#1 (1) {
[
"setor":"trabalhador":private]=> string(11) "Secretário"
["nome":"pessoa":private]=> uninitialized(string) // note que os atributos da classe pessoa não foram inicializados
["cpf":"pessoa":private]=> uninitialized(string)
}
Os atributos da classe pessoa não foram inicializados.
<?php
class pessoa{
private string $nome;
private string $cpf;
public function __construct($nome,$cpf){
$this->nome = $nome;
$this->cpf = $cpf;
echo "executnado cosntrutor pessoas".PHP_EOL;
}
}
class trabalhador extends pessoa{
private string $setor;
public function __construct(string $setor, string $nome, string $cpf)
{
parent::__construct($nome,$cpf);
$this->setor = $setor;
}
}
$trabalhador = new trabalhador('Secretário', 'Vincius', '123456789');
var_dump($trabalhador);
//resultado
executnado cosntrutor pessoas
object(trabalhador)#1 (3) {
[ "setor":"trabalhador":private]=> string(11) "Secretário"
["nome":"pessoa":private]=> string(7) "Vincius"
["cpf":"pessoa":private]=> string(9) "123456789"
}
Agora o construtor foi inicializado