Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Funcionamento do Autoload de Classes | Aula 04

Bom dia prezados,

Parabéns pelo curso. Muito bom!

Gostaria apenas de tirar algumas dúvidas referente a aula 04.

Por que as classes Conexao.php e Categoria.php não estão requisitando o arquivo global.php, sendo que o arquivo Conexao.php precisa do valor das constantes para conectar ao banco de dados e o arquivo Categoria.php precisa da classe Conexao para realizar as query?

Agora sobre a função "spl_autoload_register('carregarClasse');", eu entendi que ela é automaticamente chamada em todo arquivo que requisita o global.php, mas como ela sabe qual classe eu quero passar no parâmetro? É quando eu instancio um objeto da classe desejada?

Desde já fico grato pela atenção.

4 respostas

Bom dia Jeferson,

Respondendo a sua pergunta: "...mas como ela sabe qual classe eu quero passar no parâmetro? É quando eu instancio um objeto da classe desejada?"

Sim, no momento em que você instancia a classe o autoload faz o carregamento.

Espero ter ajudado.

solução!

Oi Jeferson, tudo bem? O que acontece é que quando você executa o new para criar um objeto, o autoload verifica se a classe que você está instanciando está no escopo ou consegue adicioná-lo ao escopo. Caso sim, ele resolve a dependência e tudo funciona normalmente, se não temos um erro.

O global não precisa ser adicionado em todos os pontos da aplicação, uma vez que ele registrou o loader na memória, o restante do código consegue usá-lo. Por isso você pode carrega-lo no inicio da aplicação apenas.

Espero ter ajudado

Oi Jeferson, tudo bom?

Quando criamos um autoloader estamos dizendo que toda vez que uma classe for instanciada, vamos olhar para o nome dela e dar um require_once nela =)

Quem faz isso pra gente, por baixo dos panos, é o php mesmo.

Quanto a duvida: Por que as classes Conexao.php e Categoria.php não estão requisitando o arquivo global.php...

A ideia é justamente que o php gerencie quem vai ser chamado e quando. O autoload cuida disso pra gente =)

Abraço!

Obrigado pelas respostas. Elas tiraram as minhas dúvidas.