Pular para o conteúdo
getnextpdf.com

Enterprise edição

PHPStan — Referência Profunda

  • Uma única classe pública: EditionBoundaryRule, uma regra personalizada do PHPStan sobre instruções use.
  • 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.editionBoundaryViolation na linha use infratora.
  • 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.

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.

Instale o pacote e, em seguida, registre a regra na configuração do PHPStan.

Terminal window
composer require nextpdf/enterprise:^3
rules:
- NextPDF\Enterprise\PHPStan\EditionBoundaryRule
SímboloParâmetrosComportamento padrãoRetornaLança ou falha comNotas
EditionBoundaryRuleNenhum (sem argumentos de construtor)Regra do PHPStan sem estado, inscrita em instruções useNunca lançafinal; implementa PHPStan\Rules\Rule sobre Use_
EditionBoundaryRule::getNodeType()NenhumDeclara o tipo de nó AST em que a regra se inscrevestring (Use_::class)Nunca lançaMétodo padrão do contrato Rule do PHPStan
EditionBoundaryRule::processNode()Node $node, Scope $scopeVerifica cada símbolo importado contra os prefixos proibidos para o namespace analisadolist<IdentifierRuleError> (vazia quando em conformidade)Nunca lança; as violações surgem como erros de regraIdentificador de erro nextpdf.editionBoundaryViolation
final class EditionBoundaryRule implements Rule
{
public function getNodeType(): string;
public function processNode(Node $node, Scope $scope): array;
}

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 analisadoRótulo de ediçãoPrefixos de importação proibidos
Subnamespaces NextPDF\*, excluindo Pro e EnterpriseCoreNextPDF\Pro\, NextPDF\Enterprise\
NextPDF\Pro e NextPDF\Pro\*ProNextPDF\Enterprise\
NextPDF\Enterprise e NextPDF\Enterprise\*EnterpriseNenhum (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.

  • 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 subnamespaces NextPDF\.
  • 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 prefixo NextPDF\Pro\.
  • Importar os nomes literais NextPDF\Pro ou NextPDF\Enterprise sem 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, function e const sob um prefixo proibido são todas reportadas.
  • Referências inline totalmente qualificadas escritas sem uma instrução use estão fora do escopo. Prefira importações para que o limite seja imposto.
  • Declarações use de grupo são analisadas como o tipo de nó distinto GroupUse e ficam fora da inscrição Use_ 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.

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.

  • 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 é final e 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/enterprise 2.1.0; o contrato acima reflete a 3.1.0.

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.