13.6.2.12 Doc::preAffect()
3.2.20
Hameçon (ou hook) utilisée par la fonction new_doc()
et pour
toute fonction qui récupère les données d'un document en base de données afin de
les affecter à l'objet comme par exemple lors de recherche de
document.
13.6.2.12.1 Description
void protected function preAffect (array &$data, bool &$more , bool &$reset )
Cette permet de contrôler l'affectation des données avant leur affectation dans l'objet. Au moment de l'appel, l'objet document contient les valeurs affectées du précédent document.
Cette méthode ne peut pas empêcher l'affectation mais peux modifier les données affectées.
13.6.2.12.1.1 Avertissements
Cette méthode est appelée pour toute affectation d'objet documentaire. Elle est appelée principalement par les fonctions de récupération de document et de recherche mais aussi par les méthode de révision et de changement d'état.
Cette méthode étant bas-niveau, les tests et traitement définis dans cette fonction peuvent pénaliser les temps de traitement.
Lors d'une recherche, cette méthode est appelée pour chacun des document trouvés si l'option de retour précise le retour d'objet. Dans le cas de retour brut, cette méthode n'est pas appelée car il n'y a pas de création d'objet.
13.6.2.12.2 Liste des paramètres
- (array)
data
-
Contient les valeurs qui seront affectées à l'objet. Le tableau est indexé par les noms des attributs et propriétés du document.
Ces valeurs peuvent être modifiées. Le tableau "data" sert ensuite lors de l'affectation.
Les valeurs indexées "values" et "attrids" contiennent aussi l'ensemble des attributs sous une forme sérialisée.
- (bool)
more
-
Indique que si les données fournies par le paramètre
data
sont incomplètes, alors les données manquantes sont récupérées depuis l'index "values" (s'il existe) fourni dans ce même paramètredata
.
Il est possible de modifier ce paramètre afin de forcer ou inhiber ce fonctionnement.Note: Dans le cas d'une recherche ce paramètre est mis à
true
- (bool)
reset
-
Indique que toutes les données de la précédente affectation seront effacées Cela concerne les propriétés et les attributs mais aussi les variables privées. Il est possible de modifier ce paramètre afin de forcer ou inhiber le
reset
.Note: Dans le cas d'une recherche ce paramètre est mis à
true
13.6.2.12.3 Valeur de retour
Aucune.
13.6.2.12.4 Erreurs / Exceptions
Aucune.
13.6.2.12.5 Historique
Aucun.
13.6.2.12.6 Exemples
Forcer l'affectation d'un attribut suivant une certaine condition. Si aucun
message d'avertissement (my_warning
) n'est indiqué et le niveau (my_order
)
est supérieur à 10 alors on indique un message par défaut.
namespace My; use \Dcp\AttributeIdentifiers\MyFamily as MyAttributes; class MyFamily extends Dcp\Family\Document { protected function preAffect(array &$data, &$more, &$reset) { if (!$data[MyAttributes::my_warning]) { if ($data[MyAttributes::my_order] > 20 ) { $data[MyAttributes::my_warning]="Emergency level priority"; } elseif ($data[MyAttributes::my_order] > 10 ) { $data[MyAttributes::my_warning]="High level priority"; } } } }
En cas d'affichage de rapport ou de document, l'attribut my_warning
sera affiché suivant l'ordre my_order
. Par contre, cela ne constitue pas une
affectation en base de donnée sauf si l'affectation est suivie d'une
sauvegarde.
13.6.2.12.7 Notes
Cette méthode n'est pas appelée si aucune donnée n'est fournie dans le tableau
data
.