Dynamic-Mess.com


"The world is a dynamic mess of jiggling things..."

Les tableaux en PHP, avec print_r et serialize

Article posté le 27-11-2013 dans la catégorie PHP

L'utilisation des tableaux en PHP est très aisée, mais il est bon parfois de rappeller cette simplicité, mais surtout de préciser quelques fonctions utiles et leur cas d'utilisation.

1- Déclarer un tableau

Pour déclarer un tableau, rien de plus simple, c'est une variable. Vous voulez la remplir dynamiquement, allez y, cela ne pose pas de problème!

Exemple de création de tableau :

$monPremierTableau[0]="Eric";
$monPremierTableau[1]="Benoit";
$monDeuxiemeTableau["Prenom1"]="Luc";
$monDeuxiemeTableau["Prenom2"]="Jean";

Cette méthode vous permet ainsi d'utiliser un index, ou un nom de champ. A noter que tout cela est dynamique à souhait. Par exemple, on pourrait rajouter :

$monPremierTableau[0][1]="Eric" // Tableau à deux dimensions

Vous pouvez aussi, dans le cas où votre tableau ne concerne qu'une "entité", le déclarer comme ceci :

$monTroisiemeTableau = array('Nom'=>'Dupont', 'Prenom'=>'Jean');
echo $monTroisiemeTableau {'Prenom'};

 

2- La fonction print_r

La fonction print_r est bien utile en développement en permettant d'afficher le contenu d'un tableau. Reprenons notre dernier exemple, et ajoutons :

echo print_r($monTroisiemeTableau);

Vous affichera :

Array ( [Nom] => Dupont [Prenom] => Jean ) 1

3- serialize, unserialize, wakeup and sleep

Qu'est ce donc que tout ce charabiat. Rien de très complexe, mais que des choses utiles!

La fonction serialize() vous permet de transfromer un objet, un tableau, en une chaine de caractère. Cela permet ainsi de la transporter plus facilement, d'une page à l'autre par exemple, avec des variables de type _GET ou _POST. La fonction unserialize() fait la manoeuvre inverse, restituant l'objet à son étant d'origine. L'avantage, est de permettre ainsi certains transfert, et non plus d'avoir à passer toutes les varibales pour reconstruire ensuite l'objet, mais aussi qu'il restitue l'objet à l'identique!

NOTE : Il arrive parfois qu'avec l'utilisation en variable $_GET, vous ayez un message d'erreur. Cela est du au fait que certains caratères ne sont pas utilisables dans une URL. Pour résoudre ce problème, utilisez la fonction urlencode($String).

On appelle cela faire de la LINEARISATION d'objets.

Arrivent ensuite deux autres fonctions optionnelles mais utiles. __sleep() s'utilise avec serialize() alors que __wakeup() s'utilise avec unserialize().

Elles s'utilisent en POO. Si vous voulez passer l'instance (l'objet) en paramètre à une autre page, vous allez le sérialiser. Cependant, vous n'avez pas nécessairement besoin de tout transporter. Pour cela, déclarez la fonction __sleep() dans votre classe, fonction qui se contentera de retourner les variables à conserver. Par exemple :

public function __sleep()
  {
   // Ici les instructions à exécuter juste avant la linéarisation.
    // On retourne ensuite la liste des attributs (variables) que l'on veut sauver.

    return array('serveur', 'utilisateur', 'motDePasse', 'dataBase');
}

La fonction __wakeup() elle se contentera d'éxcuter les instructions à réaliser juste après la "déserialisalisation". Par exemple :

public function __wakeup()
  {
    $this->maFonction();
  }

 


Tweet
comments powered by Disqus