Annotation de propriété @composite
-
/** * @composite * @composite false * @composite true * @var Class_Name */ public $property
L’annotation @composite, appliquée à une propriété, indique que cette propriété aura pour valeur l’objet composé dont l’objet courant est composant.
Elle ne s’applique :- qu’à une propriété de type classe.
- que dans des classes qui utilisent le trait de composition Component.
Comportements induits
L’application de cette règle de gestion agit sur les comportements suivants :
- Le plugin Maintainer, qui met à jour la structure de la base de données en fonction des données, créera une contrainte de clé étrangère avec suppression en CASCADE pour le champ correspondant à une propriété @composite. La règle sera RESTRICT pour les champs correspondant à des propriétés non @composite.
- Lorsque une propriété est @composite, les fonctions utilitaires Empty_Object::isEmpty, Null_Object::isEmpty et Null_Object::isNull ne tiennent pas compte de l’objet stocké dans cette propriété pour déterminer si l’objet est respectivement vide ou nul.
- Les propriétés @composite sont également implicitement @mandatory par défaut : un composant n’a en effet pas à avoir d’existence propre, il est forcément relié à un composé.
Comportements internes
Les comportements ci-dessous concernent la mécanique interne du framework. Les maîtriser n’est pas essentiel à connaitre quand utiliser @composite ou non.
- Les propriétés @composite sont ignorées lors de l’intégration de sous-objets via l’annotation @integrated.
- Une classe de lien peut utiliser l’annotation @composite pour repérer la propriété qui réalise le lien.
- @composite permet de retrouver la propriété à utiliser pour la valeur par défaut de l’annotation @foreign depuis l’objet composé.