Segue código abaixo para auxiliar na compreensão do código:
FuncionarioAutenticavel.php
<?php
namespace classes\abstratas;
use classes\abstratas\Funcionario;
class FuncionarioAutenticavel extends Funcionario{
public $senha;
public function autenticar($senha){
return $this->senha == $senha;
}
}
?>
Diretor.php
<?php
namespace classes\funcionarios;
use classes\abstratas\FuncionarioAutenticavel;
use classes\abstratas\Funcionario;
class Diretor extends FuncionarioAutenticavel{
public function getBonificacao(){
return $this->salario * 0.5;
}
}
?>
Funcionario.php
<?php
namespace classes\abstratas;
class Funcionario{
public $nome;
public $cpf;
protected $salario;
public function __construct(string $cpf, float $salario)
{
$this->cpf = $cpf;
$this->salario = $salario;
}
public function alteraDados ($novoNome, $novoCPF, $novoSalario)
{
$this->nome = $novoNome;
$this->cpf = $novoCPF;
$this->salario = $novoSalario;
}
public function getBonificacao() {
return $this->salario * 0.5;
}
public function aumentarSalario() {
$this->salario *= 1.5;
}
}
Dúvida, toda vez que tente fazer o extends na classe diretor para FuncionarioAutenticavel e FuncionárioAutenticavel realiza o extends da classe funcionário, apresenta o fatal error abaixo:
Fatal error: Uncaught Error: Class 'classes\abstratas\FuncionarioAutenticavel' not found in C:\xampp\htdocs\php\classes\funcionarios\Diretor.php:7 Stack trace: #0 C:\xampp\htdocs\php\autoload.php(7): include_once() #1 [internal function]: load('classes/funcion...') #2 C:\xampp\htdocs\php\index.php(9): spl_autoload_call('classes\\funcion...') #3 {main} thrown in C:\xampp\htdocs\php\classes\funcionarios\Diretor.php on line 7
Porém, quando realizo o extends na classe diretor.php diretamente na classe funcionario.php, o código funciona sem apresentar erros.