Quand on parle d'afficher "quelque chose", c'est en réalité envoyer ce "quelque chose" au navigateur qui va lui réellement en faire l'affichage dans sa fenêtre. Toute mise en forme de ce "quelque chose" doit obgligatoirement être faite avec des balises HTML et/ou des règles de style CSS.

La connaissance de HTML (et dans une moindre mesure de CSS) est un pré-requis absolument nécessaire à l'utilisation de PHP.

### echo

Nous avons déjà employé de nombreuses fois l'instruction echo qui est la méthode à privilégier pour afficher des informations.

L'instruction echo accepte autant de paramètres (ie les éléments à afficher) que nécessaire. Cela nous permet de ne pas avoir besoin d'utiliser de concaténation pour réaliser les affichages.

Quelque soit le langage utilisé, les concaténations sont toujours coûteuses en ressources, en particulier mémoire, et doivent donc toujours être évitées quand c'est possible.

Les paramètres peuvent être de n'importe quel type (sauf un objet) et un transtypage automatique sera fait éventuellement pour l'affichage. Evidemment on ne passera pas un tableau, à echo puisque le résultat du transtypage serait 'Array'.

Les valeurs des paramètres peuvent être des valeurs littérales, des variables et la valeur de retour de fonctions.

Exemple : l'instruction echo
<?php require('bib_fonctions.php'); htmlDebut('L\'instruction echo'); echo '<h4>Du code HTML et une expression littérale</h4>'; $prenom = 'François'; $nbEnfants = 2; echo '<p>Je m\'appelle ', $prenom, ' et j\'ai ', $nbEnfants, ' enfants.'; $nom = 'Piat'; echo '<p>Mon nom est ', $nom, ", $prenom ", strtoupper($nom); htmlFin(); ?>

### print_r() et var_dump()

Les fonctions print_r et var_dump servent pratiquement exclusivement pour le débuggage. Elles affichent les variables qui leur sont passées sans faire de conversion.

Ce qui est intéressant avec ces fonctions c'est que les tableaux sont examinés récursivement et que les informations sur les clés et les valeurs sont affichées. Pour que l'affichage des tableaux soient lisibles, il faut utiliser les balises html <pre> et </pre>.

Exemple : les fonctions print_r() et var_dump()
<?php require('bib_fonctions.php'); htmlDebut('print_r et var_dump'); //--------------------------------------------------------- function debugger($variable) { echo '<h4>Debug</h4>', '<pre>Avec print_r : <br>'; print_r($variable); echo '<br>Avec var_dump : <br>'; var_dump($variable); echo '</pre>'; } //--------------------------------------------------------- $x = true; debugger($x); //--------------------------------------------------------- $x = 'François Piat'; debugger($x); //--------------------------------------------------------- $x = array('François', 'Piat', 44); debugger($x); //--------------------------------------------------------- $x = array('prenom'=>'François', 'nom'=>'Piat', 'age'=>44); debugger($x); //--------------------------------------------------------- class Voiture { public $couleur = 'rouge'; private $roues = 4; private $bruit = ''; function demarrer() { $this->bruit = 'vroum'; } } $x = new Voiture; debugger($x); htmlFin(); ?>

### printf()

La fonction printf() envoie une chaîne formatée au navigateur. Cette fonction est la même que celle que l'on trouve dans d'autres langages (C par exemple). Le premier argument à passer à la fonction est une chaîne décrivant le format de sortie. Les arguments suivants sont les valeurs à afficher.

Exemple :

    print("La date : %02d %02d %d", 20, 2, 2002)

Dans le format de sortie, le caractère % indique une substitution de valeur. Ce caractère peut être suivi de un ou plusieurs modificateurs de format, et d'un spécificateur de type.

Les modificateurs de format doivent respecter l'ordre suivant et sont :

- un caractère de justification à gauche
- le nombre minimum de caractères
- un nombre indiquant le nombre de chiffres aprés la virgule pour les nombres à virgule flottante

Le caractère de justification indique quel caractère sera utilisé pour justifier à gauche la valeur. Ce caractère peut être un espace (valeur par défaut), 0 (zéro), ou n'importe quel caractère précédé d'un guillemet simple. Le caractère de justification doit être suivi d'un nombre indiquant la longueur minimum de la valeur formatée.

Exemple : modificateurs de format
<?php require('bib_fonctions.php'); htmlDebut('Modificateur de format'); echo '<h4>Justification avec des 0 </h4>'; printf('%04d %04d %04d %04d', 1, 12, 123, 1234); echo '<h4>Justification avec *</h4>'; printf( "%'*4d %'*4d %'*4d %'*4d", 1, 12, 123, 1234); echo '<h4>Nombres à virgule</h4>'; printf(' %.2f', 1); printf(' %.2f', 1.23); printf(' %04.2f', 123.4); printf(' %f', 1234); htmlFin(); ?>

Dans la réalité cette fonction est très rarement utilisée. Elle sert surtout à l'affichage des décimales dans les nombres à virgules.

Pour être complet, le spécificateur de type indique le type de données passées en argument. Les spécificateurs possibles sont :

%
  : aucun argument nécessaire
b
  : l'argument est traité comme un entier, et représenté comme un nombre binaire.
c
  : l'argument est traité comme un entier, et représenté comme un nombre ascii.
d
  : l'argument est traité comme un entier, et représenté comme un nombre décimal.
u
  : l'argument est traité comme un entier, et représenté comme un nombre décimal non signé.
f
  : l'argument est traité comme un double, et représenté comme un nombre à virgule flottante.
o
  : l'argument est traité comme un entier, et représenté comme un nombre octal.
s
  : l'argument est traité tel quel, et représenté comme une chaîne.
x
  : l'argument est traité comme un entier, et représenté comme un nombre hexadécimal (en minuscules).
X
  : l'argument est traité comme un entier, et représenté comme un nombre hexadécimal (en majuscules).

Exemple : spécificateur de type
<?php require('bib_fonctions.php'); htmlDebut('Spécificateur de type'); printf('<h4> %d vaut %b en binaire</h4>', 1234, 1234); printf('<h4> %d vaut %c en ascii</h4>', 123, 123); printf('<h4> %d vaut %o en octal</h4>', 1234, 1234); printf('<h4> %d vaut %x en hexa</h4>', 1234, 1234); htmlFin(); ?>

### print()

La fonction print() envoie son argument au navigateur. Elle retourne true si la chaîne a bien été envoyée, false sinon.

Le fait que cette fonction n'accepte qu'un paramètre oblige soit à concaténer, soit à appeler la fonction plusieurs fois de suite. Dans tous les cas c'est une perte de temps et de ressources. Préférez toujours echo à cette fonction.

La valeur de retour de cette fonction est totalement inutile et totalement inutilisée.