Enterprise edição
PHPStan — Referência Profunda
Visão geral
Seção intitulada “Visão geral”- Uma única classe pública:
EditionBoundaryRule, uma regra personalizada do PHPStan sobre instruçõesuse. - Impõe a ordem de dependência unidirecional entre edições. O Core nunca importa Pro ou Enterprise. O Pro nunca importa Enterprise.
- As violações reportam o identificador
nextpdf.editionBoundaryViolationna linhauseinfratora. - Apenas em tempo de build. A regra não tem caminho em tempo de execução nem efeito sobre os PDFs gerados.
- Distribuída em
nextpdf/enterprise. O registro usa a configuração padrão do PHPStan.
Disponibilidade e licenciamento
Seção intitulada “Disponibilidade e licenciamento”Esta capacidade é distribuída no NextPDF Enterprise (nextpdf/enterprise) e ativa-se com um envelope de licença de nível Enterprise. É uma regra de análise estática em tempo de build, sem caminho em tempo de execução: o limite do pacote nextpdf/enterprise a controla, e ela não carrega um código de capacidade separado por recurso. O Core e o Pro não distribuem um equivalente. Compare as edições e obtenha uma licença.
Superfície da API pública
Seção intitulada “Superfície da API pública”Instale o pacote e, em seguida, registre a regra na configuração do PHPStan.
composer require nextpdf/enterprise:^3rules: - NextPDF\Enterprise\PHPStan\EditionBoundaryRule| Símbolo | Parâmetros | Comportamento padrão | Retorna | Lança ou falha com | Notas |
|---|---|---|---|---|---|
EditionBoundaryRule | Nenhum (sem argumentos de construtor) | Regra do PHPStan sem estado, inscrita em instruções use | — | Nunca lança | final; implementa PHPStan\Rules\Rule sobre Use_ |
EditionBoundaryRule::getNodeType() | Nenhum | Declara o tipo de nó AST em que a regra se inscreve | string (Use_::class) | Nunca lança | Método padrão do contrato Rule do PHPStan |
EditionBoundaryRule::processNode() | Node $node, Scope $scope | Verifica cada símbolo importado contra os prefixos proibidos para o namespace analisado | list<IdentifierRuleError> (vazia quando em conformidade) | Nunca lança; as violações surgem como erros de regra | Identificador de erro nextpdf.editionBoundaryViolation |
final class EditionBoundaryRule implements Rule{ public function getNodeType(): string;
public function processNode(Node $node, Scope $scope): array;}Contrato de comportamento
Seção intitulada “Contrato de comportamento”EditionBoundaryRule implementa o contrato padrão Rule do PHPStan sobre o tipo de nó Use_. Para cada instrução use, ela compara o namespace do arquivo analisado com o prefixo de namespace de cada símbolo importado e impõe uma ordem de dependência unidirecional.
| Namespace analisado | Rótulo de edição | Prefixos de importação proibidos |
|---|---|---|
Subnamespaces NextPDF\*, excluindo Pro e Enterprise | Core | NextPDF\Pro\, NextPDF\Enterprise\ |
NextPDF\Pro e NextPDF\Pro\* | Pro | NextPDF\Enterprise\ |
NextPDF\Enterprise e NextPDF\Enterprise\* | Enterprise | Nenhum (nível mais alto) |
Qualquer namespace fora de NextPDF\ | — | Nenhum (sem restrição) |
Quando uma importação cruza o limite, a regra reporta um erro sob o identificador nextpdf.editionBoundaryViolation, ancorado na linha da instrução use infratora. A mensagem nomeia o símbolo importado, o namespace importador, o prefixo proibido e rótulos de edição legíveis por humanos. Cada símbolo importado produz no máximo um erro: a correspondência de prefixo para no primeiro prefixo proibido que corresponder.
A verificação é estática e consultiva. Ela reporta violações de limite em instruções de importação. Ela não prova que o programa analisado esteja correto em outros aspectos.
Casos extremos e modos de falha
Seção intitulada “Casos extremos e modos de falha”- Namespaces fora de
NextPDF\e arquivos sem namespace não produzem erros; a regra retorna uma lista vazia. - O código declarado exatamente no namespace raiz
NextPDF(sem segmento de subnamespace) não é restringido; a detecção de limite corresponde a subnamespacesNextPDF\. - Arquivos do Enterprise nunca são sinalizados por importar símbolos do Pro ou do Core (nível mais alto, por design).
- A correspondência de prefixo reconhece o separador. Um namespace como
NextPDF\Professionalé classificado como Core, não Pro, e as importações sob ele nunca geram falso positivo contra o prefixoNextPDF\Pro\. - Importar os nomes literais
NextPDF\ProouNextPDF\Enterprisesem nenhum segmento adicional não é sinalizado; apenas símbolos sob esses prefixos correspondem. - A regra não filtra por tipo de importação: importações de classe,
functioneconstsob um prefixo proibido são todas reportadas. - Referências inline totalmente qualificadas escritas sem uma instrução
useestão fora do escopo. Prefira importações para que o limite seja imposto. - Declarações
usede grupo são analisadas como o tipo de nó distintoGroupUsee ficam fora da inscriçãoUse_da regra; importações simples por símbolo mantêm o limite verificado. processNode()nunca lança; todos os resultados surgem como erros de regra do PHPStan ou uma lista vazia.- Não é um componente de tempo de execução. Ela não realiza operações criptográficas, e o modo FIPS não é aplicável.
Conformidade
Seção intitulada “Conformidade”Nenhuma conformidade com padrões é declarada. Esta é uma regra de tooling de desenvolvedor que impõe uma restrição arquitetural interna (camadas de edição) em builds downstream. Ela implementa o contrato de extensão de regra do PHPStan, que é uma API de ferramenta de terceiros, não um padrão formal. A regra não faz nenhuma garantia de conformidade, certificação ou correção sobre o código analisado; ela reporta apenas violações de importação de limite de edição e é consultiva.
Notas de desenvolvimento
Seção intitulada “Notas de desenvolvimento”- A regra é executada dentro do PHPStan durante a análise, lê apenas a estrutura do código-fonte e não tem efeito sobre os PDFs gerados nem sobre qualquer serviço implantado.
- Registrar a regra e escolher o nível do PHPStan continuam sendo responsabilidade do integrador.
- A classe é
finale sem estado, então é segura sob os workers de análise paralela do PHPStan. - A saída da análise é determinística para uma dada árvore de código-fonte: as mesmas entradas produzem a mesma lista de erros.
- Disponível desde o
nextpdf/enterprise2.1.0; o contrato acima reflete a 3.1.0.
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 da API pública com suporte. Caminhos de namespace internos, classes auxiliares, tabelas de mecanismos, nomes de arquivos de runbook e prefixos de tíquete estão fora do escopo.