Hola, tengo una pregunta sobre el uso de
yield en PHP/5.4.7
Tengo el siguiente código:
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:
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 :-\
<?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";
}
?>
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.
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!