13.6.3.20 Doc::getOldRawValue()
13.6.3.20.1 Description
string getOldRawValue ( string $idAttribute )
Récupère la valeur précédent l'appel aux méthodes de modification de valeurs
d'attributs. Si la valeur précédente est inchangée suite à l'appel d'une méthode
de modification, la méthode retournera le booléen false
.
Les principales méthodes de modification de valeurs sont :
13.6.3.20.1.1 Avertissements
Cette méthode ne récupère que les valeurs changées que sur un objet. Si on
instancie deux fois le même document, alors les modifications de l'un ne sont
pas répercutées sur l'autre. Si l'attribut n'a pas encore été modifié la valeur
de retour est false
(après une création). Les enregistrements de valeurs
modifiés sont remis à zéro lors d'une révision (Doc::revise
).
13.6.3.20.2 Liste des paramètres
- (string)
info
- Identifiant de l'attribut
13.6.3.20.3 Valeur de retour
La valeur de retour indique la valeur brute précédente à la modification.
setValue | getRawValue | getOldValue |
---|---|---|
"vert" | "vert" | false |
"jaune" | "jaune" | "vert" |
"bleu" | "bleu" | "jaune" |
"bleu" | "bleu" | "jaune" |
" " | null | "bleu" |
Si la valeur n'a pas encore été changée, le retour est le booléen false
. Si
l'identifiant de l'attribut n'existe pas le retour est aussi false
.
13.6.3.20.4 Erreurs / Exceptions
Aucune.
13.6.3.20.5 Historique
Cette méthode était anciennement nommée getOldValue
.
13.6.3.20.6 Exemples
13.6.3.20.6.1 Évolution du retour de getOldRawValue
Le document de l'exemple a son attribut my_numberone
initialisé à -3
.
use \Dcp\AttributeIdentifiers\MyFamily as Attributes\MyFamily; function printOldValue(Doc $doc) { printf( ' Valeur :'); var_dump($doc->getRawValue(Attributes\MyFamily::my_numberone)); printf( 'Ancienne Valeur :'); var_dump($doc->getOldRawValue(Attributes\MyFamily::my_numberone)); printf( "#---------------------\n"); } function updateValue(Doc $doc, $newValue){ if(null === $newValue){ printf(' efface valeur :null'); $doc->clearValue(Attributes\MyFamily::my_numberone, $newValue); } else { printf(' maj valeur :'); var_dump($newValue); $doc->setValue(Attributes\MyFamily::my_numberone, $newValue); } } /** @var \Dcp\Family\MyFamily */ $myDoc = new_Doc("", "MY_DOCUMENT"); if ($myDoc->isAlive()) { printOldValue($myDoc); updateValue($myDoc, 34); printOldValue($myDoc); updateValue($myDoc, 35); printOldValue($myDoc); updateValue($myDoc, 35); printOldValue($myDoc); updateValue($myDoc, null); printOldValue($myDoc); updateValue($myDoc, 35); printOldValue($myDoc); }
Le résultat :
Valeur :string(2) "-3" Ancienne Valeur :bool(false) #--------------------- maj valeur :int(34) Valeur :string(2) "34" Ancienne Valeur :string(2) "-3" #--------------------- maj valeur :int(35) Valeur :string(2) "35" Ancienne Valeur :string(2) "34" #--------------------- maj valeur :int(35) Valeur :string(2) "35" Ancienne Valeur :string(2) "34" #--------------------- efface valeur :null Valeur :string(0) "" Ancienne Valeur :string(2) "35" #--------------------- maj valeur :int(35) Valeur :string(2) "35" Ancienne Valeur :string(0) "" #---------------------
13.6.3.20.6.2 Utilisation dans un post-traitement
Mise à jour conditionnelle d'un attribut. L'attribut my_countchange
enregistre
le nombre de fois que l'attribut my_numberone
a été changé.
Soit la famille suivante :
BEGIN | Ma famille | MYFAMILY | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
CLASS | My\MyFamily | ||||||||||
// | idattr | idframe | label | T | A | type | ord | vis | … | phpfunc | |
ATTR | MY_IDENTIFICATION | Identification | N | N | frame | 10 | W | ||||
ATTR | MY_NUMBERONE | MY_IDENTIFICATION | nombre 1 | Y | N | int | 20 | W | |||
ATTR | MY_COUTCHANGE | MY_IDENTIFICATION | nombre de changement | N | N | int | 30 | R | |||
END |
Avec la classe :
namespace My; use \Dcp\AttributeIdentifiers\MyFamily as MyAttributes; class MyFamily extends \Dcp\Family\Document { protected function setMyCountChange() { $err=''; $oldValue=$this->getOldRawValue(MyAttributes::my_countchange); if ($oldValue !== false) { $cc=$this->getAttributeValue(MyAttributes::my_countchange); $err=$this->setAttributeValue(MyAttributes::my_countchange, $cc+1); } return $err; } public function postStore() { return $this->setMyCountChange(); } }
13.6.3.20.7 Notes
Dans le cas des attribut multi-valués, il est possible d'utiliser la méthode `Doc::rawValueToArray() pour avoir les différentes valeurs.