Pular para o conteúdo
He4rt / Docs
Toggle sidebar
Interno noindex

Referência técnica — acessível, mas fora dos buscadores.

Discord
Getting Started Leitura · 4 min

Convenções de Código

Estas convenções valem para todo o monorepo. Antes de abrir um PR, garanta que o seu código passa nas mesmas verificações que a CI roda — assim a revisão foca no que importa, não em formatação.

PHP

<?php

declare(strict_types=1);

namespace He4rt\Economy\Actions;

final readonly class CreditWalletAction
{
    public function __construct(private WalletRepositoryContract $wallets) {}

    public function execute(CreditWalletData $data): void
    {
        // ...
    }
}

Models e migrations

Tipo da coluna Tipo no PHPDoc
uuid, string, text string
integer, bigInteger int
boolean bool
timestamp, datetime Carbon|null
json, jsonb array<string, mixed>|null
enum (backed) EnumClass

Adicione |null quando a coluna for nullable.

Arquitetura modular

Cada feature vive em app-modules/{kebab-case}/ com namespace He4rt\{PascalCase}\ (exceção: o módulo he4rt usa He4rt\Core). Crie módulos e componentes com os comandos do internachi/modular em vez de mover arquivos na mão.

Regras de dependência entre camadas:

O ServiceProvider fica sempre em src/{ModuleName}ServiceProvider.php, nunca dentro de Providers/.

Camada de apresentação

Ferramentas de qualidade

Três ferramentas guardam a qualidade do código. Rode-as antes de finalizar:

# Formatação (Pint) — sempre rode depois de editar PHP
vendor/bin/pint --dirty

# Análise estática (PHPStan / Larastan)
vendor/bin/phpstan analyse

# Análise estática de um módulo específico (mais rápido)
vendor/bin/phpstan analyse app-modules/docs

# Refactors automáticos (Rector) — em modo dry-run
vendor/bin/rector --dry-run

Para rodar tudo de uma vez, como a CI faz:

composer test

Esse alvo encadeia test:rector, test:pint, test:phpstan e a suíte de testes. Um PR só está pronto quando composer test passa limpo.

Ao adicionar entradas em ignoreErrors num phpstan.neon, use o estilo de bloco indentado (um - sozinho, chaves abaixo) e sempre escope por path. Prefira corrigir a causa raiz a ignorar.

Testes

php artisan test --compact --filter=CreditWallet

Veja Rodando o Projeto para o setup do ambiente e Seu Primeiro Pull Request para o fluxo de contribuição.