En este post te voy a explicar por qué aparece el error de PHP que dice:
Parse error: syntax error, unexpected ‘:’, expecting ‘{‘ in … on line …
Básicamente el error dice que no esperaba los dos puntos, y que en su lugar esperaba la llave de apertura. Veamos por qué se origina este error y cómo se soluciona; tiene que ver con la versión de PHP.
Si vienes aquí y no quieres saber la explicación del problema, sino la solución, yo te la digo: actualiza tu versión de PHP a una igual o superior a la 7; o modifica todas las funciones que indiquen el tipo de valor de retorno.
No recomiendo modificar las funciones, pues en ocasiones no son funciones tuyas, sino de las dependencias, y te llevaría bastante tiempo además de que en una actualización tus cambios se perderían, así que lo más recomendable es actualizar la versión de PHP.
Ahora sí, comencemos con la explicación.
Recordemos una función de PHP. Es así:
<?php
function obtenerNombre(){
return "parzibyte";
}
$nombre = obtenerNombre();
echo $nombre;
Regresa un string, pero no lo estamos indicando, solo que, leyendo el cuerpo de la función, sabemos que es de tipo string.
Una función puede devolver cualquier tipo de dato, o no devolver nada. Incluso puede devolver distintos tipos de datos, es decir, en ocasiones puede regresar un entero, en otras null, en otras false, etcétera.
Todo lo explicando anteriormente cambió con la llegada de PHP 7. En ella, se permite especificar el tipo de valor de retorno. Así que la función anterior podría ser rescrita así:
<?php
function obtenerNombre(): string{
return "parzibyte";
}
$nombre = obtenerNombre();
echo $nombre;
Mira la línea 2. Estoy especificando que voy a regresar un string. De este modo hay mayor seguridad, pues:
Lo que pasa es que si escribes una función con tipo de retorno en PHP 5, obtendrás un error. Ya que normalmente la sintaxis es:
function nombre(){}
Pero con la versión 7, se puede hacer así:
function nombre(): valor_de_retorno{}
Esto es porque en la versión 5 (y anteriores) se espera una llave {
después de los paréntesis ()
, pero en su lugar hay dos puntos :
. La versión 7 no tiene problema, pero a la 5 y anteriores no les cuadra porque simplemente no lo entienden.
En este post te quiero compartir un código de C++ para listar y cancelar trabajos…
Gracias a WebAssembly podemos ejecutar código de otros lenguajes de programación desde el navegador web…
Revisando y buscando maneras de imprimir un PDF desde la línea de comandos me encontré…
Esta semana estuve recreando la API del plugin para impresoras térmicas en Android (HTTP a…
Hoy te enseñaré a extraer la cadena base64 de una clave PEM usando una función…
Encender un foco con un Bot de Telegram es posible usando una tarjeta como la…
Esta web usa cookies.