PrestaShop 9 es el mayor salto arquitectonico desde la serie 1.7. Internamente, la plataforma migro a Symfony 6.4 LTS, reemplazo los patrones legacy ObjectModel con Doctrine ORM para entidades principales e introdujo una verdadera API REST basada en API Platform. Si mantienes modulos, estos cambios importan – y prepararte ahora te ahorrara prisas despues.
El cambio a Symfony 6.4
PrestaShop 9 viene con Symfony 6.4, lo que significa varias cosas para los desarrolladores de modulos:
- Las definiciones de servicios deben usar las nuevas convenciones de autowiring – el antiguo enfoque
services.ymlaun funciona pero esta obsoleto - Las anotaciones de controllers se reemplazan por atributos PHP 8 –
#[Route]en lugar de@Route - Los event subscribers usan el atributo
#[AsEventListener]para el registro automatico - El requisito minimo de PHP es ahora 8.1, con 8.2+ recomendado
La buena noticia: la mayoria de los hooks y el sistema de modulos en si permanecen retrocompatibles. Tu hookDisplayHeader() sigue funcionando. Pero si tu modulo registra servicios Symfony, controllers de admin o comandos CQRS – revisalos cuidadosamente.
Doctrine ORM reemplaza ObjectModel para el nucleo
Este es el cambio que sorprende a la mayoria de los desarrolladores. Las entidades principales como Product, Category y Customer ahora se gestionan via Doctrine. Lo que esto significa en la practica:
- Las consultas SQL directas contra tablas principales siguen funcionando, pero la capa ORM puede no ver tus cambios inmediatamente
- El enfoque
Db::getInstance()sigue siendo funcional para tus propias tablas de modulo - Si usas handlers CQRS que interactuan con entidades principales, cambia al patron Doctrine Repository
- Las subclases legacy
ObjectModelpara entidades principales estan marcadas como obsoletas
API Platform: por fin REST real
PrestaShop 9 expone una verdadera API REST construida sobre API Platform. Esto reemplaza el antiguo webservice que ha existido desde PrestaShop 1.5. Mejoras clave:
- Respuestas compatibles con JSON:API con paginacion y filtrado adecuados
- Autenticacion OAuth 2.0 con tokens de acceso con alcance limitado
- Documentacion OpenAPI auto-generada a partir de los metadatos de entidades
- Los recursos API personalizados pueden ser agregados por modulos usando anotaciones estandar de API Platform
Lista de verificacion de migracion para desarrolladores de modulos
- Probar en PHP 8.1+ – eliminar el codigo de compatibilidad con PHP 7.x
- Verificar servicios Symfony – asegurar que las definiciones de servicios son compatibles con Symfony 6.4
- Revisar handlers CQRS – migrar el acceso a entidades principales a repositorios Doctrine
- Actualizar controllers de admin – si usas controllers Symfony, migrar anotaciones a atributos
- Probar operaciones de base de datos – verificar que las consultas SQL directas en tablas principales siguen funcionando correctamente junto al ORM
- Agregar
ps_versions_compliancy– establecer la version min/max en el descriptor del modulo para indicar soporte PS9
Lo que permanece igual
No todo cambia. El sistema de hooks, las plantillas Smarty para el front-office, el formato del descriptor de modulo y la estructura general de directorios permanecen consistentes. La promesa de retrocompatibilidad de PrestaShop significa que la mayoria de los modulos bien escritos funcionaran con ajustes minimos.
La conclusion clave: prueba temprano, actualiza tus definiciones de servicios y adopta Doctrine donde tenga sentido. PrestaShop 9 es una mejor base para el largo plazo – y los modulos que adopten los nuevos patrones seran mas faciles de mantener.
Comentarios (8)
Dejar un comentario