Annoted::setAnnotationLocal
-
public function setAnnotationLocal(string $annotation_name) : Annotation
Description
Renvoie une copie locale de l’annotation nommée dont la valeur sera attachée à l’objet Reflection annoté.
Toute modification à l’annotation lue pour cet objet Reflection sera appliquée uniquement pour la valeur de cette annotation associée à l’objet Reflection. Les modifications n’affecteront donc pas la valeur de l’annotation pour d’autres instances déjà existantes ou futures de Reflection représentant le même objet.
De même, toute modification à la même annotation pour d’autres instances ultérieures de Reflection représentant le même objet sera sans effet sur la valeur de l’annotation locale pour l’instance de l’objet Reflection pour lequel vous avez appelé setAnnotationLocal.
Une seule annotation locale n’est possible pour chaque objet Reflection : si vous appelez à nouveau cette méthode pour le même objet annoté, elle retournera la même annotation locale.
Les appels futurs à Reflection::of ou Annoted::getAnnotation via l’objet Reflection pour lequel vous avez rendu l’annotation locale renverront ce même objet annotation locale. Les modifications futures de cette annotation resteront donc localisées sur cet objet Reflection.
Liste de paramètres
string $annotation_name
Le nom de l’annotation concernée. Utilisez de préférence la constante ANNOTATION de la classe d’annotation associée. Le nom entre guillemets n’est à utiliser qu’à défaut de classe et de constante d’annotation associés.
Valeur de retour
La méthode retourne l’annotation locale.
Exemple
use ITRocks\Framework\Reflection\Annotation\Property\User_Annotation; use ITRocks\Framework\Reflection\Reflection_Property; use ITRocks\Framework\User; // (...) $property1 = new Reflection_Property(User::class, 'login'); $user_annotation = User_Annotation::local($property1); // préférer l'écriture ci-dessus, qui est un alias de : // $user_annotation = $property1->setAnnotationLocal(User_Annotation::ANNOTATION); $user_annotation->add(User_Annotation::INVISIBLE); $property2 = new reflection_Property(User::class, 'login'); echo User_Annotation::of($property1)->has(User_Annotation::INVISIBLE) . LF; // > true echo User_Annotation::of($property2)->has(User_Annotation::INVISIBLE) . LF; // > false
Voir aussi