Présentation
CopixDataObject permet de manipuler des objets contenant des données dans leurs propriétés publiques.
C'est une classe de base destinée à être étendue. Les sous-classes doivent définir des propriétés publiques à manipuler.
Seules les propriétés publiques sont prises en compte par CopixDataObject. Si des propriétés privées ou protégées sont définies, elles sont ignorées par les méthodes de CopixDataObject, y compris pour la sérialisation.
Méthodes
Constructeur
CopixDataObject(mixed $pValues = null)
Si $pValues est un tableau, $this->loadFromArray($pValues) est appelé.
CopixDataObject::loadFromArray()
CopixDataObject CopixDataObject::loadFromArray(array $pValues)
Charge les propriétés publiques de l'instance à partir d'un tableau associatif (nom=>valeur). Les entrées dont le nom ne correspond pas à une propriété publique sont ignorées.Les propriétés absentes du tableau sont supprimées de l'instance.
Retourne l'objet.
CopixDataObject::writeToArray()
CopixDataObject CopixDataObject::writeToArray(array &$pArray)
Ecrit les propriétés publiques de l'instance dans le tableau $pArray. Si une propriété n'est pas définie, son équivalent dans le tableau est supprimé.
Retourne l'objet.
CopixDataObject::toArray()
array CopixDataObject::toArray()
Retourne un tableau contenant les propriétés publiques de l'instance.
Exemples
Pour les exemples nous utiliserons la classe imaginaire suivante :
<?php class MaClasse extends CopixDataObject { public $a = "aOriginal"; public $b; protected $_c = "_cOriginal"; public function setC($pC) { $this->_c = $pC; } }
Instanciation
<?php $instance = new MaClasse(); $instance->setC("nouveau_C"); var_dump($instance); ?>
Résultat:
object(MaClasse)[2] public 'a' => string 'aOriginal' (length=9) public 'b' => null protected '_c' => string 'nouveau_C' (length=10)
Chargement depuis un tableau
<?php $instance = new MaClasse(); $instance->setC("nouveau_C"); $instance->loadFromArray(array("b"=>5,"_c"=>"_cDuTableau")); ?>
Résultat:
object(MaClasse)[2] public 'b' => int 5 protected '_c' => string 'nouveau_C' (length=9)
A remarquer:
- _c n'a pas été modifié : c'est une propriété protégée,
- a a été supprimé : il n'y a pas d'élément a dans le tableau.
Ecriture dans un tableau
<?php $instance = new MaClasse(); $instance->loadFromArray(array("b"=>5)); $array = array("z"=>"zDuTableau", "a"=>8, "_c"=>"_cDuTableau"); $instance->writeToArray($array); var_dump($array); ?>
Résulat:
array 'z' => string 'zDuTableau' (length=10) '_c' => string '_cDuTableau' (length=11) 'b' => int 5
A remarquer:
- a a été supprimé du tableau : la propriété a n'est pas définie dans l'instance,
- z et _c n'ont pas été modifiés : ce ne sont pas des propriétés publiques de la classe.
Conversion en tableau
<?php $instance = new MaClasse(); var_dump($instance->toArray()); ?>
Résulat:
array 'a' => string 'aOriginal' (length=9)
Sérialisation et désérialisation
<?php $instance = new MaClasse(); $instance->loadFromArray(array("b"=>5)); var_dump(unserialize(serialize($instance))); ?>
Résultat :
object(MaClasse)[6] public 'b' => int 5 protected '_c' => string '_cOriginal' (length=10)
A remarquer:
- les propriétés a et b sont dans le même état avant et après,
- la propriété _c est fixée à sa valeur par défaut : étant protégée, elle n'a pas été sérialisée.
