Sobes.tech
Junior

O que é o carregamento automático de classes em PHP?

sobes.tech IA

Resposta da IA

Mecanismo que permite carregar dinamicamente ficheiros de classes (interfaces, traits) quando são utilizados pela primeira vez num script, em vez de serem incluídos explicitamente com require ou include.

Vantagens:

  • Simplifica a estrutura do código.
  • Acelera a execução da aplicação (as classes desnecessárias não são carregadas).
  • Facilita a gestão de dependências.

Implementa-se através da função spl_autoload_register(), que regista funções de autoload na pilha. Quando se tenta criar uma instância de uma classe não definida, o PHP chama as funções registadas por ordem, passando o nome da classe como argumento.

Exemplo de uma função de autoload simples:

<?php
// Esta função será chamada ao tentar usar uma classe não definida
spl_autoload_register(function (string $className) {
    // Assume-se que as classes estão armazenadas em ficheiros com extensão .php
    // e que o nome do ficheiro corresponde ao nome da classe (sensível a maiúsculas e minúsculas!)
    $filePath = $className . '.php';

    // Verifica se o ficheiro existe e inclui-o
    if (file_exists($filePath)) {
        require_once $filePath;
    }
});

// Exemplo de uso de uma classe que será carregada automaticamente
$myObject = new MyClass();

O padrão mais comum para autoloading é o PSR-4. Define como mapear espaços de nomes de classes com caminhos para ficheiros no sistema de ficheiros.