CakePHP: Uso de beforeSave y afterSave

Es interesante y útil la existencia, en el modelo, de los métodos (callback) beforeSave y afterSave para manipular los datos antes o después de que vayan a ser grabados en la Base de Datos.

Un detalle muy importante a la hora de implementarlos en nuestros modelos es que debemos retornar un true o un false según el resultado del código de nuestra función.

function beforeSave(){
     // Código ...
     return true;
}

Mirando el código de la clase model, veo que sus métodos beforeSave y afterSave retornan un true por defecto. Ahora me pregunto si en caso de que queramos retornar un true en nuestra implementación, es más correcto retornar una llamada al método padre:

return parent::beforeSave();

De esta manera nos aseguramos que si algún día estos métodos en las clases padre tienen algo más implementado que un simple return true, ese código sea ejecutado. En caso de hacer este tipo de retorno, deberemos estar pendientes de futuras versiones de CakePHP, para ver si añaden nuevo código en estas funciones base.

Tags: , ,

2 Responses to “CakePHP: Uso de beforeSave y afterSave”

  1. Dani Says:
    February 14th, 2008 at 10:57 am

    Creo que lo que hay que retornar es un valor booleano, true o false según la ejecución de beforeSave haya sido exitosa o no, o según reglas de validación o que se yo….
    Creo que no es necesario retornar la llamada al método padre.

  2. admin Says:
    February 15th, 2008 at 2:32 am

    Pues Dani, mirando la API de CakePHP, primero el app_model.php y de éste al model.php (todo esto dentro del directorio cake) he visto que la llamada a parent::beforeSave() no hace más que un return true. O sea que tienes toda la razón. Pero aún así, me pregunto si dejar la llamada igualmente por si en futuras versiones de cakePHP ese método en el core realizará alguna tarea más que sea necesaria ser llamada.

    Queda pendiente modificar el artículo con tus aportaciones.

Leave a Reply