Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

589
Visualizações
¿Por qué PHP no arroja un error de clase no encontrada cuando se usa :: clase?

Al usar la sintaxis de SomeClass::class para obtener el FQN de la clase, si la clase no existe, solo SomeClass en lugar de generar un error fatal.

 echo SomeClass::class; // SomeClass $class = new SomeClass(); // Fatal Error: Uncaught Error: Class 'SomeClass' not found $const = SomeClass::SOME_CONST; // Fatal Error: Uncaught Error: Class 'SomeClass' not found

Esto me parece indeseable. ¿Por qué ocurre esto y hay alguna manera de cambiar este comportamiento?

about 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

La ::class -palabra clave se evalúa en tiempo de compilación

del manual

La resolución de nombres de clases mediante ::class es una transformación en tiempo de compilación. Eso significa que en el momento en que se crea la cadena del nombre de la clase, aún no se ha producido la carga automática. Como consecuencia, los nombres de clase se expanden incluso si la clase no existe. No se emite ningún error en ese caso.

Eso significa que usar ::class no llama al cargador automático y nunca arroja un error. Para llamar al autocargador, debe crear una instancia de la clase o usar cualquier función que invoque el autocargador (es decir class_exists )

Podría solucionar esto definiendo una función de prueba simple, pero no estoy seguro si eso es un gran beneficio.

 function class_or_fail($name) { if (class_exists($name)) { return $name; } throw new \Exception("Invalid class $name"); } echo class_or_fail(SomeClass::class);
about 4 years ago · Santiago Trujillo Relatório

0

En realidad, no es necesario definir la clase para determinar su FQN. Es simplemente una cuestión de usar el espacio de nombres en el que se encuentra o hacer coincidir cualquier declaración de use vigente. Si desea determinar si la clase realmente existe, hay una función para eso: class_exists() .

about 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda