Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

411
Vistas
¿Cómo tipear generadores en php?

Suponga que tiene una clase como:

 class MyClass { public function __construct(public int $id, public string $foo) { } }

y un generador que crea múltiples instancias de esa clase como esta:

 $myGenerator = function (): \Generator { yield new MyClass(id: 21, foo: 'fnord'); yield new MyClass(id: 13, foo: 'baz'); yield new MyClass(id: 42, foo: 'Thanks for the fish'); };

¿Cómo puedo escribir una función de generador para que deduzca el tipo de cada elemento durante la iteración?

 foreach ($myGenerator as $instance) { $instance-> // no autocompletion in IDE as type is not known }

no quiero hacer:

 foreach ($myGenerator as $instance) { /** @var MyClass $instance */ $instance-> // now autocomplete works inside an IDE }

ya que molestaría cada uso del generador con sugerencias redundantes. Quiero proporcionarlo una vez en el mejor nivel del tipo de retorno del generador.

¿Hay una mejor alternativa para escribir un generador?

En pseudocódigo, esperaría poder hacer algo como:

 $myGenerator = function (): \Generator<MyClass> {...}

Supongo que el sistema de tipos de php no está preparado para esto, no me importaría usar phpdocs/phpstan. El caso de uso principal es la compatibilidad con IDE (en mi caso, phpStorm, aunque debería funcionar más allá de eso).

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Como otras colecciones sobre phpdoc

 /** * @return \Generator|MyClass[] */ $myGenerator = function (): \Generator { yield new MyClass(id: 21, foo: 'fnord'); yield new MyClass(id: 13, foo: 'baz'); yield new MyClass(id: 42, foo: 'Thanks for the fish'); };
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda