Regla simple:
- Si necesitas alterar datos en runtime → plugin.
- Si necesitas reaccionar a un evento → observer.
Ejemplo de plugin seguro:
```
public function afterGet($subject, $result) {
$result['custom_field'] = 'value';
return $result;
}
```
Ejemplo de observer para persistir data:
```
public function execute(\Magento\Framework\Event\Observer $observer) {
$quote = $observer->getEvent()->getQuote();
// guardar atributos
}
```
Mezclar ambos sin criterio suele duplicar queries y romper tests.
Buenas prácticas:
- Evita `around` cuando un `after` es suficiente.
- Si el dato se persiste, hazlo una vez y no en cada step.
- Documenta qué módulo toca el checkout, sino nadie entiende luego el flujo.
En entornos enterprise, el checkout es el lugar donde más rápido se rompe el negocio. Menos magia, más control.
- Si necesitas alterar datos en runtime → plugin.
- Si necesitas reaccionar a un evento → observer.
Ejemplo de plugin seguro:
```
public function afterGet($subject, $result) {
$result['custom_field'] = 'value';
return $result;
}
```
Ejemplo de observer para persistir data:
```
public function execute(\Magento\Framework\Event\Observer $observer) {
$quote = $observer->getEvent()->getQuote();
// guardar atributos
}
```
Mezclar ambos sin criterio suele duplicar queries y romper tests.
Buenas prácticas:
- Evita `around` cuando un `after` es suficiente.
- Si el dato se persiste, hazlo una vez y no en cada step.
- Documenta qué módulo toca el checkout, sino nadie entiende luego el flujo.
En entornos enterprise, el checkout es el lugar donde más rápido se rompe el negocio. Menos magia, más control.
Comentarios