Enterprise edição
PHPStan
Em resumo
Seção intitulada “Em resumo”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.
Disponibilidade e licenciamento
Seção intitulada “Disponibilidade e licenciamento”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.
Instalação
Seção intitulada “Instalação”composer require nextpdf/enterprise:^3Registre a regra na sua configuração do PHPStan:
rules: - NextPDF\Enterprise\PHPStan\EditionBoundaryRuleVisão conceitual
Seção intitulada “Visão conceitual”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 deNextPDF\Pro\*ou deNextPDF\Enterprise\*. - O código Pro (
NextPDF\Pro\*) não deve importar deNextPDF\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.
Por que funciona assim
Seção intitulada “Por que funciona assim”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.
Superfície de API
Seção intitulada “Superfície de API”| Class | Responsibility |
|---|---|
EditionBoundaryRule | PHPStan 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.
Exemplo de código — Início rápido
Seção intitulada “Exemplo de código — Início rápido”# phpstan.neonincludes: - vendor/nextpdf/enterprise/phpstan.neon.distExemplo de código — Produção
Seção intitulada “Exemplo de código — Produção”# phpstan.neonrules: - NextPDF\Enterprise\PHPStan\EditionBoundaryRule
parameters: level: 9 paths: - srcUma 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.
Casos extremos e pegadinhas
Seção intitulada “Casos extremos e pegadinhas”- 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 umuseestá 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.
Desempenho
Seção intitulada “Desempenho”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.
Notas de segurança
Seção intitulada “Notas de segurança”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.
Residência de dados e mitigações de PII
Seção intitulada “Residência de dados e mitigações de PII”A regra processa o código-fonte em tempo de análise e não manipula nenhum dado de documento ou pessoal.
Telemetria segura e limpeza de logs
Seção intitulada “Telemetria segura e limpeza de logs”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.
Conformidade
Seção intitulada “Conformidade”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.
Comportamento em modo FIPS
Seção intitulada “Comportamento em modo FIPS”Não se aplica; a regra não realiza nenhuma operação criptográfica e não tem caminho em tempo de execução.
Modelo de ameaças
Seção intitulada “Modelo de ameaças”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.
Contrato de comportamento
Seção intitulada “Contrato de comportamento”- A regra inspeciona cada instrução
usee 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.editionBoundaryViolationcom 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
useestá fora do escopo desta regra; prefira importações para que o limite seja imposto.
Limite de publicação
Seção intitulada “Limite de publicação”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.
Fallback no Core
Seção intitulada “Fallback no Core”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.
Fallback no Pro
Seção intitulada “Fallback no Pro”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.
Nota sobre o limite do Enterprise
Seção intitulada “Nota sobre o limite 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.
Limite de implantação
Seção intitulada “Limite de implantação”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.
Limite legal e de conformidade
Seção intitulada “Limite legal e de conformidade”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.