-
Notifications
You must be signed in to change notification settings - Fork 0
Autoloading
Esta secção explica como configurar correctamente o autoload após a geração das classes/constantes, garantindo que o ficheiro gerado possa ser utilizado em qualquer ponto da aplicação sem require manuais.
O comando tbl-class gera um ficheiro PHP que contém:
- Constantes para:
- Tabelas
- Colunas
- Chaves estrangeiras
- Enums
- Uma classe principal (
Tbl) - Todas as constantes são lowercase, por convenção da biblioteca
Dependendo da configuração, o ficheiro pode:
- Estar dentro de um namespace
- Ou ser um ficheiro global (sem namespace)
A forma de autoload varia conforme esta escolha.
A biblioteca suporta oficialmente duas abordagens:
- Autoload via PSR-4 (recomendado)
- Autoload via files (modo simples)
Utilize esta abordagem quando:
- Define um namespace no output
- Usa Composer como autoloader principal
- Pretende integração limpa e escalável
- O projecto é médio ou grande
No ficheiro de configuração do tbl-class:
output:
namespace: App\Database
path: src/DatabaseIsto irá gerar, por exemplo:
src/Database/Tbl.php
Com o conteúdo:
namespace App\Database;
final class Tbl
{
public const users = 'users';
public const users_id = 'id';
}Adicione ao composer.json:
{
"autoload": {
"psr-4": {
"App\\Database\\": "src/Database"
}
}
}Depois execute:
composer dump-autoloaduse App\Database\Tbl;
echo Tbl::users;
echo Tbl::users_id;Nenhum require manual é necessário.
- Compatível com standards PHP (PSR)
- Melhor organização do código
- Carregamento preguiçoso (lazy loading)
- Ideal para aplicações profissionais
Recomendado quando:
- Não pretende usar namespaces
- O projecto é pequeno ou legacy
- Quer uma configuração mínima
output:
namespace: null
path: databaseExemplo de ficheiro gerado:
database/tbl.php
Conteúdo:
final class Tbl
{
public const users = 'users';
}{
"autoload": {
"files": [
"database/tbl.php"
]
}
}Depois execute:
composer dump-autoloadecho Tbl::users;- O ficheiro é carregado sempre que o Composer inicializa
- Não recomendado para projectos grandes
- Deve existir apenas um ficheiro gerado
O comando tbl-class permite incluir ficheiros adicionais apenas durante a execução do CLI.
Exemplo de configuração:
autoload:
include: vendor/autoload.phpDurante a execução, o CLI faz:
include_once vendor/autoload.php;Isto é útil quando:
- O projecto já possui classes próprias
- Existem dependências externas
- O schema depende de tipos personalizados
Este include não substitui o autoload final do projecto.
Após gerar o ficheiro, o CLI verifica se a classe Tbl está acessível:
- Se não estiver, imprime instruções exactas para configurar o autoload
- Evita erros silenciosos
- Facilita a primeira integração
- Preferir sempre PSR-4
- Não editar manualmente o ficheiro gerado
- Regenerar após alterações no schema
- Usar
--checkem CI/CD - Manter o ficheiro fora da pasta
vendor