2.1.3 Model Extensies

Op een zelfde manier werken Behaviors als een manier om gemeenschappelijke functionaliteit tussen modellen toe te voegen. Bijvoorbeeld, als u gebruikersgegevens opslaat in een boomstructuur, kunt u uw User model instellen zodat deze zich zal gedragen als een boom en u extra functionaleit verkrijgt voor het verwijderen, toevoegen en verschuiven van knooppunten in uw onderliggende boomstructuur.

Modellen worden ook ondersteund door een andere klasse genaamd DataSource. DataSources zijn een abstractie die het mogelijk maken dat modellen verschillende typen van data op een consistente wijze kunnen manipuleren. Terwijl de belangrijkste bron van gegevens in een CakePHP toepassing vaak een database is, zou u wellicht toch nog additionele DataSources willen schrijven zodat uw modellen ook RSS feeds, CSV bestanden, LDAP entries, of iCal events kunnen vertegenwoordigen. DataSources maken het mogelijk om records uit verschillende bronnen met elkaar te associeren: in plaats van te worden beperkt door SQL joins, kunnen DataSources uw LDAP model zeggen dat het verbonden is met meerdere iCal events.

Net zoals controllers, zijn modellen ook uitgerust met callbacks:

  • beforeFind()
  • afterFind()
  • beforeValidate()
  • beforeSave()
  • afterSave()
  • beforeDelete()
  • afterDelete()

De namen van deze methoden zouden beschrijvend genoeg moeten zijn om u te laten weten wat ze doen. Kijk voor de details in het hoofdstuk "Modellen".