Resumo
Generated/ConsultaCteV2/DFe_NetCore_Domain_Enums_EntityStatus.php declara dois cases com o mesmo nome no mesmo enum. Não é um aviso: o arquivo não compila, e qualquer coisa que carregue a classe morre com Fatal error.
Verificado na v3.5.0.
O código
enum DFe_NetCore_Domain_Enums_EntityStatus: int
{
case Value_0 = 0;
case Value_1 = 1;
case Value_1 = -1; // <-- mesmo nome do case anterior
}
Fatal error: Cannot redefine class constant
Nfe\Generated\ConsultaCteV2\DFe_NetCore_Domain_Enums_EntityStatus::Value_1
in .../DFe_NetCore_Domain_Enums_EntityStatus.php on line 15
A causa aparente é o gerador nomear o case a partir do valor sem considerar o sinal: 1 e -1 colidem em Value_1.
Como reproduzir
docker run --rm -v "$PWD/vendor/nfe/nfe":/sdk php:8.2-cli \
php -l /sdk/src/Generated/ConsultaCteV2/DFe_NetCore_Domain_Enums_EntityStatus.php
Varri src/ inteiro: este é o único arquivo com erro fatal — os demais compilam.
Impacto
Não afeta quem usa NFS-e, porque a classe pertence à consulta de CT-e e nunca é autoloada. Mas atinge:
--classmap-authoritative, o modo recomendado para empacotar o SDK dentro de um plugin WordPress: o classmap referencia a classe, e qualquer caminho que a resolva fatal.
- Lint de árvore completa em CI (
php -l em src/), que passa a falhar.
- Análise estática (PHPStan e afins).
- Qualquer consumidor que realmente use
ConsultaCteV2, para quem a funcionalidade simplesmente não existe.
Encontrei isso justamente validando o pacote de distribuição do plugin, onde o lint de todos os 781 arquivos PHP era o gate.
Sugestão
Duas coisas, independentes:
- Corrigir a nomeação de cases no gerador para valores negativos — por exemplo
Value_minus_1, Value_Neg1, ou o nome semântico do enum quando o OpenAPI o fornece.
- Adicionar ao pipeline de geração um passo que roda
php -l em cada arquivo emitido e falha o build. Este defeito seria pego na hora, e a linha 3.0–3.4.0 (79 arquivos com type-hints malformados, corrigidos no 3.4.1) sugere que a família de problema já se repetiu.
Contexto
Encontrado ao empacotar o plugin nfe/woo-nfe com o nfe/nfe 3.5. Relacionado, mas distinto, do #36 (deprecations em ConsultaNfeDistribuicaoV1).
Resumo
Generated/ConsultaCteV2/DFe_NetCore_Domain_Enums_EntityStatus.phpdeclara dois cases com o mesmo nome no mesmo enum. Não é um aviso: o arquivo não compila, e qualquer coisa que carregue a classe morre comFatal error.Verificado na v3.5.0.
O código
A causa aparente é o gerador nomear o case a partir do valor sem considerar o sinal:
1e-1colidem emValue_1.Como reproduzir
docker run --rm -v "$PWD/vendor/nfe/nfe":/sdk php:8.2-cli \ php -l /sdk/src/Generated/ConsultaCteV2/DFe_NetCore_Domain_Enums_EntityStatus.phpVarri
src/inteiro: este é o único arquivo com erro fatal — os demais compilam.Impacto
Não afeta quem usa NFS-e, porque a classe pertence à consulta de CT-e e nunca é autoloada. Mas atinge:
--classmap-authoritative, o modo recomendado para empacotar o SDK dentro de um plugin WordPress: o classmap referencia a classe, e qualquer caminho que a resolva fatal.php -lemsrc/), que passa a falhar.ConsultaCteV2, para quem a funcionalidade simplesmente não existe.Encontrei isso justamente validando o pacote de distribuição do plugin, onde o lint de todos os 781 arquivos PHP era o gate.
Sugestão
Duas coisas, independentes:
Value_minus_1,Value_Neg1, ou o nome semântico do enum quando o OpenAPI o fornece.php -lem cada arquivo emitido e falha o build. Este defeito seria pego na hora, e a linha 3.0–3.4.0 (79 arquivos com type-hints malformados, corrigidos no 3.4.1) sugere que a família de problema já se repetiu.Contexto
Encontrado ao empacotar o plugin nfe/woo-nfe com o
nfe/nfe3.5. Relacionado, mas distinto, do #36 (deprecations emConsultaNfeDistribuicaoV1).