[Resuelto] [DUDA] Yield en php

Iniciado por DarK_FirefoX, 30 Marzo 2015, 22:30 PM

0 Miembros y 1 Visitante están viendo este tema.

DarK_FirefoX

Hola, tengo una pregunta sobre el uso de yield en PHP/5.4.7

Tengo el siguiente código:

Código (php) [Seleccionar]


function get_users_messages_iterator($user_data)
{
global $connection;

$query = "SELECT * FROM messages";
$result = $connection->query($query);

$row = array();

while($row = $result->fetch_assoc())
{
yield $row; //esto se puede hacer?
}
}



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

Código (php) [Seleccionar]
function get_users_messages($user_data)
{
$messages = get_users_messages_iterator($user_data);
foreach ($messages as $key => $value) {
echo $value;
}
}


Pero esto me dá el siguiente error:

CitarParse 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 (php) [Seleccionar]
<?php
function gen_one_to_three() {
    for (
$i 1$i <= 3$i++) {
        
// Observe que $i es preservado entre yields
        
yield $i;
    }
}

$generator gen_one_to_three();
foreach (
$generator as $value) {
    echo 
"$value\n";
}
?>

MinusFour

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.

DarK_FirefoX

CitarInformació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!