Sin impuesto Con impuesto

«Cannot declare class» en un override de módulo de PrestaShop

Un override de ps_emailalerts mal nombrado tumbó la tienda, y el error siguió al borrarlo. Cómo se nombran los overrides de módulos y por qué la culpable era la caché del hosting.

Equipo Rekire
Actualizado: 05/12/2025 16
«Cannot declare class» en un override de módulo de PrestaShop
Compartir:

Un compañero creó un override del módulo de alertas por correo (ps_emailalerts) y la tienda empezó a dar este error:

Fatal error: Cannot declare class Ps_EmailAlerts, because the name is already
in use in /override/modules/ps_emailalerts/ps_emailalerts.php on line 3

Borró el fichero, vació la caché de PrestaShop… y el error seguía ahí. Hubo dos problemas, y el segundo es el que hace perder la tarde.

1. El nombre de la clase del override estaba mal

Los overrides de clases del núcleo y los de módulos se nombran distinto:

Qué sobrescribesFicheroClase
Una clase del núcleooverride/classes/Product.phpclass Product extends ProductCore
Un módulooverride/modules/ps_emailalerts/ps_emailalerts.phpclass Ps_EmailAlertsOverride extends Ps_EmailAlerts

Con un módulo no existe la clase …Core. Si declaras otra vez Ps_EmailAlerts, PHP la encuentra ya cargada (es la del propio módulo) y se para con el error.

2. Al borrar el fichero, el error seguía: caché del hosting

Si borras o corriges el override y la tienda sigue mostrando el mismo error, lo que estás viendo no es tu código actual. Por orden:

  1. Caché de PrestaShop: Parámetros avanzados → Rendimiento → Borrar la caché, o borra a mano el contenido de var/cache/prod y var/cache/dev.
  2. OPcache de PHP: guarda los ficheros PHP ya compilados. Se vacía reiniciando PHP desde el panel del hosting.
  3. Caché del propio hosting. En este caso era esta: el SuperCacher de SiteGround. Otros hostings tienen la suya (LiteSpeed, Varnish, NGINX cache). Se vacía desde el panel del hosting, no desde PrestaShop.

El compañero no tenía acceso al panel del hosting de su cliente: en cuanto el cliente vació la caché de SiteGround, todo funcionó.

Si usas un script en la raíz de la tienda para vaciar cachés, bórralo al terminar. Un fichero así, accesible desde el navegador y sin protección, deja a cualquiera vaciar tu caché cuando quiera.

¿Te has atascado con un override o con una caché que no se vacía? En Rekire lo resolvemos dentro de nuestros bonos de horas. → Contacto

Esto salió en @PrestashopEsp, la mayor comunidad PrestaShop de España en Telegram. Ver la conversación

Cargando...
Cookies
Volver arriba