Pular para o conteúdo
getnextpdf.com

Enterprise edição

PHPStan

O NextPDF Enterprise traz uma regra PHPStan personalizada, EditionBoundaryRule, que sinaliza importações use que cruzam o limite de edição Core → Pro → Enterprise. É uma verificação estática voltada ao desenvolvedor que relata violações; ela analisa instruções de importação e não garante a correção do seu código.

Este recurso é entregue no NextPDF Enterprise (nextpdf/enterprise) e é ativado com um envelope de licença de nível Enterprise. É uma regra PHPStan de tempo de build registrada por meio da sua configuração do PHPStan, então ela roda durante a análise estática e não tem caminho em tempo de execução; o controle de licença é o limite do pacote nextpdf/enterprise, sem um código de capacidade por recurso separado. Compare as edições e obtenha uma licença.

Terminal window
composer require nextpdf/enterprise:^3

Registre a regra na sua configuração do PHPStan:

rules:
- NextPDF\Enterprise\PHPStan\EditionBoundaryRule

A regra inspeciona cada instrução use e compara o namespace que importa com o prefixo de namespace do símbolo importado. Ela impõe uma ordem de dependência unidirecional:

  • O código Core (NextPDF\, excluindo os subnamespaces Pro e Enterprise) não deve importar de NextPDF\Pro\* ou de NextPDF\Enterprise\*.
  • O código Pro (NextPDF\Pro\*) não deve importar de NextPDF\Enterprise\*.
  • O código Enterprise (NextPDF\Enterprise\*) é o nível superior e pode importar de qualquer um deles.

Quando uma importação cruza o limite, a regra relata um erro com o identificador nextpdf.editionBoundaryViolation e uma mensagem que nomeia o namespace que importa, o prefixo proibido e rótulos de edição legíveis por humanos. A verificação é puramente estática: ela lê o grafo de importações em tempo de análise.

A regra raciocina sobre instruções use em tempo de análise, e não em tempo de execução, porque o limite de edição é um invariante arquitetural, e não uma decisão em tempo de execução. Core, Pro e Enterprise são entregues como pacotes separados, então um nível inferior nunca deve depender de símbolos ausentes em uma instalação menor. Detectar uma importação que cruza o limite durante a análise estática faz o build falhar antes que o erro seja entregue. A alternativa é pior: a mesma importação surge mais tarde como um erro fatal de classe ausente em uma implantação somente Core. A ordem é deliberadamente unidirecional, Core → Pro → Enterprise, refletindo como os pacotes open-core se sobrepõem uns aos outros. O Enterprise permanece sem restrições porque é o nível superior e pode referenciar todas as edições abaixo dele.

Contexto do design: Open core, sem lock-in.

ClassResponsibility
EditionBoundaryRulePHPStan rule over use statements; reports edition-boundary violations.

A regra implementa o contrato Rule padrão do PHPStan sobre o tipo de nó Use_ e emite erros sob o identificador nextpdf.editionBoundaryViolation.

# phpstan.neon
includes:
- vendor/nextpdf/enterprise/phpstan.neon.dist
# phpstan.neon
rules:
- NextPDF\Enterprise\PHPStan\EditionBoundaryRule
parameters:
level: 9
paths:
- src

Uma violação aparece na saída do PHPStan como, por exemplo: uma importação do Enterprise dentro de código Core é relatada como uma violação de limite de edição na linha use infratora, sob nextpdf.editionBoundaryViolation.

  • A regra raciocina sobre o namespace do arquivo analisado e o prefixo do símbolo importado. Código em um namespace que não seja NextPDF\ não é restringido por esta regra.
  • Os namespaces Enterprise são irrestritos por design; a regra nunca sinaliza um arquivo Enterprise por importar do Pro ou do Core.
  • A regra analisa instruções use. Uma referência de classe totalmente qualificada escrita inline sem um use está fora do escopo desta regra; prefira importações para que o limite seja imposto.
  • A verificação é estática e consultiva: ela relata violações de limite. Ela não prova que seu programa está de outra forma correto.

A regra é executada por instrução use durante a análise do PHPStan e realiza comparações de prefixo de string. Sua sobrecarga é proporcional ao número de instruções de importação e é desprezível em relação ao tempo total de análise.

Esta é uma regra de análise estática. Ela é executada em tempo de build dentro do PHPStan, lê apenas a estrutura do código-fonte e não tem efeito em tempo de execução sobre os PDFs gerados.

A regra processa o código-fonte em tempo de análise e não manipula nenhum dado de documento ou pessoal.

A saída da regra são diagnósticos do PHPStan. Ela contém namespaces e nomes de símbolos do seu próprio código; trate os logs de análise com o mesmo cuidado que o seu código-fonte.

Nenhuma conformidade com padrões é reivindicada. Esta é uma regra de ferramenta para desenvolvedor que impõe uma restrição arquitetural interna (a estratificação de edições) em builds a jusante.

Não se aplica; a regra não realiza nenhuma operação criptográfica e não tem caminho em tempo de execução.

Não é um componente de runtime. O propósito da regra é detectar um erro arquitetural — uma importação que cruza o limite de edição — antes que ele seja entregue, fazendo falhar a etapa de análise estática.

  • A regra inspeciona cada instrução use e impõe uma ordem de dependência unidirecional: o Core não deve importar Pro ou Enterprise; o Pro não deve importar Enterprise; o Enterprise pode importar qualquer um.
  • Uma importação que cruza o limite é relatada sob o identificador nextpdf.editionBoundaryViolation com o namespace que importa e o prefixo proibido.
  • Código em um namespace que não seja NextPDF\ não é restringido por esta regra.
  • Uma referência de classe inline totalmente qualificada sem um use está fora do escopo desta regra; prefira importações para que o limite seja imposto.

Esta página documenta apenas o comportamento observável externamente e a superfície de API pública suportada. Caminhos de namespace internos, classes auxiliares, tabelas de mecanismos, nomes de arquivos de runbook e prefixos de tickets estão fora do escopo.

O NextPDF Core não traz uma regra PHPStan de limite de edição. Um consumidor somente Core que queira impor a estratificação de edições em seu próprio build deve escrever ou obter uma regra equivalente por conta própria.

O NextPDF Pro não traz a regra PHPStan de limite de edição; ela faz parte apenas do pacote nextpdf/enterprise. Uma implantação somente Pro não tem nenhum componente Enterprise a partir do qual registrar esta regra. Consulte a visão geral do Enterprise para conhecer a superfície do Enterprise.

Os detalhes internos de mecanismo permanecem na documentação interna do repositório de código-fonte e estão fora do escopo deste manual.

Esta é uma regra de análise estática em tempo de build. Ela é executada dentro do PHPStan durante a análise, lê apenas a estrutura do código-fonte e não tem efeito em tempo de execução sobre os PDFs gerados ou sobre qualquer serviço implantado. Registrá-la e escolher o nível do PHPStan são responsabilidade do integrador.

Esta página descreve uma regra de análise estática de ferramenta para desenvolvedor. Ela não faz nenhuma garantia de conformidade, certificação ou correção sobre o seu código; ela relata apenas violações de importação de limite de edição e é consultiva. Ela não constitui aconselhamento jurídico. Avaliar se o seu build atende às suas próprias obrigações arquiteturais ou contratuais é responsabilidade sua.