Caros, A visibilidade private não permite que um método seja acessado pelas classes filhas. é isso ? Se for isso .. estou com uma dúvida. tentei forçar um erro de proposito. mas não aconteceu.
O método validaNome é private da classe Pessoa ( mãe). No método alteraNome da classe Funcionario ( filha) chamo a função validaNome. não deveria dar algum tipo de erro?
classe Funcionario
<?php
class Funcionario extends Pessoa {
private $cargo;
public function __construct(string $nome, Cpf $cpf, string $cargo) {
parent::__construct($nome, $cpf);
$this->cargo = $cargo;
}
public function getCargo(): string
{
return $this->cargo;
}
public function alteraNome (string $nome) : void {
$this->validaNome($nome);
$this->nome = $nome;
}
}
classe Pessoa
<?php
class Pessoa {
protected $nome;
private $cpf;
public function __construct(string $nome, Cpf $cpf) {
$this->validaNome($nome);
$this->nome = $nome;
$this->cpf = $cpf;
}
public function getNome() : string {
return $this->nome;
}
public function getCpf() : Cpf {
return $this->cpf->obtemNumeroCPF();
}
private function validaNome (string $nome) {
if (strlen($nome) < 5 ) {
echo "O nome precisa ter pelo menos 5 caraceres";
exit();
}
}
}
para simular as chamadas das classes
<?php
require_once('Pessoa.php');
require_once('CPF.php');
require_once('Funcionario.php');
$func1 = new Funcionario ("Manuel", new Cpf("123.456.789-01"), "desenvolvedor");
var_dump ($func1);