php

PHP: unexpected ‘:’, expecting ‘{‘ – Solución y explicación

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.

Solución rápida

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.

Funciones en PHP

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.

Las funciones que especifican tipos de retorno

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:

  • Como programador sabes que el método te está diciendo que va a devolver un string. No tienes que parsear nada, ni castear nada, pues sabes que será una cadena.
  • El lenguaje sabe que debe regresar una cadena, y por lo tanto te puede prevenir de errores. Además, los IDE se apoyan de ello para darte sugerencias y remover errores.

Origen del problema

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.

Estoy aquí para ayudarte 🤝💻


Estoy aquí para ayudarte en todo lo que necesites. Si requieres alguna modificación en lo presentado en este post, deseas asistencia con tu tarea, proyecto o precisas desarrollar un software a medida, no dudes en contactarme. Estoy comprometido a brindarte el apoyo necesario para que logres tus objetivos. Mi correo es parzibyte(arroba)gmail.com, estoy como@parzibyte en Telegram o en mi página de contacto

No te pierdas ninguno de mis posts 🚀🔔

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.
parzibyte

Programador freelancer listo para trabajar contigo. Aplicaciones web, móviles y de escritorio. PHP, Java, Go, Python, JavaScript, Kotlin y más :) https://parzibyte.me/blog/software-creado-por-parzibyte/

Entradas recientes

Desplegar PWA creada con Vue 3, Vite y SQLite3 en Apache

Ya te enseñé cómo convertir una aplicación web de Vue 3 en una PWA. Al…

3 días hace

Arquitectura para wasm con Go, Vue 3, Pinia y Vite

En este artículo voy a documentar la arquitectura que yo utilizo al trabajar con WebAssembly…

3 días hace

Vue 3 y Vite: crear PWA (Progressive Web App)

En un artículo anterior te enseñé a crear un PWA. Al final, cualquier aplicación que…

3 días hace

Errores de Comlink y algunas soluciones

Al usar Comlink para trabajar con los workers usando JavaScript me han aparecido algunos errores…

3 días hace

Esperar promesa para inicializar Store de Pinia con Vue 3

En este artículo te voy a enseñar cómo usar un "top level await" esperando a…

3 días hace

Solución: Apache – Server unable to read htaccess file

Ayer estaba editando unos archivos que son servidos con el servidor Apache y al visitarlos…

3 días hace

Esta web usa cookies.