> CopixDBException > CopixDateTime > CopixErrorObject > CopixEvent > CopixFormatter > CopixI18N > CopixLog > CopixPPO
fr

Présentation

CopixPPO est une classe "vide" dont l'objectif est de transporter des données, principalement utilisée dans les actions de type PPO.

Demander la récupération d'une propriété inexistante d'un objet de type PPO ne génère pas de notice.

Exemples


$ppo = new CopixPPO ();
$ppo->data = 'contenu';
$ppo->data_autre = 'contenu autre';
//...

echo $ppo->existe_pas; //ne génère pas de notice
 

Il est possible de passer un tableau associatif au constructeur pour initialiser l'objet.

exemple


$ppo = new CopixPPO (array ('TITLE_PAGE'=>'Titre de ma page'));
$ppo->data = 'contenu';
$ppo->data_autre = 'contenu autre';
//...
 

Raccourcis

Dans la version SVN, un raccourcis a été créé ainsi qu'une méthode à CopixPPO pour faire un "merge". Exemple:


//via un tableau:
$ppo = _ppo(array(
    'test'=>'value1',
    'truc'=>'value2'
));
   
 

Voici un exemple de test que vous pouvez réaliser. L'utilisation d'un objet anonyme _ppo dans les paramètres d'une méhtode permet d'envoyer une liste d'arguemnts facilement modifiable sans briser l'implémentation.


<?php
class ActionGroupTest extends CopixActionGroup {
       
        function processDefault(){
               
                //test appel la classe ci dessous avec un ppo en arguement
                testme::doTest(_ppo(array(
                        'bar'=>'assignees'
                )));
                return _arNone();
        }
       
}

class testme {
       
       
        function doTest($p_options){
                //affiche les options envoyées en paramètre
                var_dump($p_options);
               
                //merge les valeurs par défaut, génération anonyme de ppo
                $p_options->merge (_ppo(array(
                        'foo'=>'foodefault',
                        'bar'=>'bardefault',
                        'baz'=>'bazdefault'
                )));
               
                //ou via un tableau associatif 
                $p_options->merge (array(
                        'foo'=>'foodefault',
                        'bar'=>'bardefault',
                        'baz'=>'bazdefault'
                ));
               
               
                //ou via un ppo
                $ppo = new CopixPPO;
                $ppo->foo = 'foodefault';
                $ppo->bar = 'bardefault';
                $ppo->baz = 'bazdefault';
               
                $p_options->merge($ppo);
               
                //affiche le nouvel objet
                var_dump($p_options);
        }
       
}
?>
 

Le résultat:


#Avant merge
object(CopixPPO)#21 (1) {
  ["bar"]=>
  string(9) "assignees"
}

#Après merge
object(CopixPPO)#21 (3) {
  ["bar"]=>
  string(9) "assignees"
  ["foo"]=>
  string(10) "foodefault"
  ["baz"]=>
  string(10) "bazdefault"
}
 

Vous voyez que la propriété "bar" n'a pas été modifié, mais les deux autres propriétés on été ajoutées avec leurs valeurs respectives.