Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: DarK_FirefoX en 30 Marzo 2015, 22:30 pm



Título: [Resuelto] [DUDA] Yield en php
Publicado por: DarK_FirefoX en 30 Marzo 2015, 22:30 pm
Hola, tengo una pregunta sobre el uso de yield en PHP/5.4.7

Tengo el siguiente código:

Código
  1.  
  2. function get_users_messages_iterator($user_data)
  3. {
  4. global $connection;
  5.  
  6. $query = "SELECT * FROM messages";
  7. $result = $connection->query($query);
  8.  
  9. $row = array();
  10.  
  11. while($row = $result->fetch_assoc())
  12. {
  13. yield $row; //esto se puede hacer?
  14. }
  15. }
  16.  
  17.  

entonces tengo esta otra función desde la cual llamo a la función anterior:

Código
  1. function get_users_messages($user_data)
  2. {
  3. $messages = get_users_messages_iterator($user_data);
  4. foreach ($messages as $key => $value) {
  5. echo $value;
  6. }
  7. }

Pero esto me dá el siguiente error:

Citar
Parse error: syntax error, unexpected '$row' (T_VARIABLE) in F:\System\Archivos de programa\XAMPP\htdocs\questions\functions\users.php on line 192

No se si lo que estoy haciendo está bien, vale destacar que es la primera vez que utilizo el yield en PHP, se como funciona, pero quizás no me estoy dando cuenta de algo. No se porque me da ese error el parser, espero me puedan ayudar.

Gracias

Añado: Incluso este ejemplo básico que veo en la documentación de php no funciona, me dá el mismo error  :-\

Código
  1. <?php
  2. function gen_one_to_three() {
  3.    for ($i = 1; $i <= 3; $i++) {
  4.        // Observe que $i es preservado entre yields
  5.        yield $i;
  6.    }
  7. }
  8.  
  9. $generator = gen_one_to_three();
  10. foreach ($generator as $value) {
  11.    echo "$value\n";
  12. }
  13. ?>


Título: Re: [DUDA] Yield en php
Publicado por: MinusFour en 30 Marzo 2015, 22:42 pm
Es parte de los generadores de PHP.

http://php.net/manual/es/language.generators.overview.php

Y al parecer necesitas PHP 5.5.0 en adelante. Parece sintaxis valida para mi, aunque si te soy honesto no los he usado.


Título: Re: [DUDA] Yield en php
Publicado por: DarK_FirefoX en 30 Marzo 2015, 22:47 pm
Citar
Información general

(PHP 5 >= 5.5.0)

Los generadores proporcionan ...

^ En efecto, no habia leído esa parte. Menos mal que me aclaraste, sino hubiera estado todo el día rompiendome la cabeza. xD Pues como yo lo veía no había ningun problema sintáctico. Actualizaré php y listo! Muchas gracias!