Annotation de propriété @foreign
-
/** * @link Map * @foreign near * @var Foreign[] */ public $property
L’annotation
@foreign
permet de sélectionner, dans la classe correspondant au type de la propriété concernée – qu’on nommera classe “voisine” (@Foreign
) -, la propriété qui contiendra le pointeur vers l’objet courant, réciproquement au pointage que représente$property
.La notation ci-dessus suppose que soit définie une propriété
Foreign::$near
de type “la classe ou un tableau de classe dans laquelle est définie $property”.L’annotation
@foreign
n’a de sens – et de valeur par défaut – que dans le cas de classes potentiellement reliées réciproquement par :- une propriété @link Collection et une propriété de la classe voisine utilisant le trait Component explicitement ou implicitement marquée @composite,
- une propriétés @link Map et une propriété de la classe voisine @link Map,
- une propriété @link Object marquée @component et une propriété de la classe voisine @link Object marquée @composite.Valeur par défaut
L’annotation prend comme valeur par défaut le nom de la seule propriété possible, dans la classe @var constituant le type de la propriété, lorsqu’elle peut être déterminée automatiquement :
- Pour une propriété @link Collection, le nom de l’unique propriété dont le type est de la classe de la propriété. Si plusieurs propriétés correspondent, le nom de l’unique propriété @composite, parmi ces choix.
- Pour une propriété @link Map, le nom de l’unique propriété dont le type est un tableau de la classe de la propriété.
- Pour une propriété @link Object, le nom de l’unique propriété @component dont le type est la classe de la propriété, ou de l’unique propriété @link Collection dont le type est un tableau de la classe de la propriété.
Dans tous ces cas, si plusieurs propriétés correspondent : un message d’erreur sera émis, vous invitant à lever l’ambiguïté en renseignant explicitement l’annotation
@foreign
.Si aucune propriété ne correspond, l’annotation a pour valeur par défaut
null
.