Les variables en PHP

Ce tuto, permet d'appréhender la notion de variable en php (et en informatique en général). Vous allez y découvrir ce qu'est une variable, à quoi elle sert, qu'il en existe plusieurs type et les limitations. Tous ce qui est dit ici est aussi expliqué dans la documentation de php => les variables en php la doc).

Le

Qu'est ce qu'une variable ?

Pour résumer on peut dire qu'une variables est un espace mémoire dans lequel ont peut mettre ce que l'on veut afin de le réutiliser plusieurs fois dans notre code php.

A quoi ça ressemble une variable ?

PHP impose qu'une variable doit commencer par un $. Donc tous ce qui commence par $ est considéré comme une variable. Une variable doit obligatoirement commencer par une lettre ou un tiret de soulignement ( _ ). exemple :

<?php
// valide
$var;
$_variable;
//invalide
$9djkfh;
//valide
$_9ll;
// ....
?>

Comment est ce que l'on créer une variable ?

Une variable peut etre créer de deux manières différentes :

  • Par affectation
  • Dans une classe (php4) avec le mot clef var

L'affectation

L'affectation est réalisé par l'opérateur égale ( = ). exemple :

<?php
$maVariable = 'une chaine de caractère';
?>

Le mot clef var

Le mot clef var permet de déclarer une variable sans pour autant y affecter un contenu. exemple :

<?php
var $maVariable;
// ou avec affectation
var $MasecondeVariable = 'ma chaine';
?>

Les différentes variables

Php est un language dit peut typé ! Ok mais c'est quoi un type ? Un type permet de différencier les différentes données qui existe. Parce qu'un pot de crème n'est pas une roue de moto, une chaine de caractère n'est pas un chiffre entier ! il existe donc différent type de variable :

  • String : chaine de caractères
  • Integer : type numérique correspondant à une entier (1, 2, 3 ...)
  • Float : type numérique correspondant à un chiffre à virgule.
  • Array : Il s'agit de tableau de donnée (vu plus bas)

Il en existe d'autre, vous pouvez consulter la documentation de php pour de plus ample information (Les différents types en php).

Comment est ce que l'on l'utilise cette variable ?

Afficher le contenu d'une variable

Pour cela il existe des fonctions telle que echo, print ou sprintf. exemple :

<?php
$MaVariable = 'une chaine de caractee';
echo $MaVariable;
// Notez que la ligne suivante fait exactement la meme chose
print $MaVariable;
// ou
echo'une chaine de caractere';
// exemple avec sprintf
sprintf('la variable Mavariable contient : %s',$Mavariable);
?>

pour les trois premier on obtient : une chaine de caractère. sprintf nous retourne : la variable Mavariable contient : une chaine de caractère. Reportez vous aux documentations de ces différentes fonctions pour plus d'infos (notation pour sprintf).

La portée des variables

Que signifie portée d'une variable ?

La portée ou visibilitée, d'une variable c'est la partie du code dans laquel on peut utiliser cette variable ! Ce n'est pas vraiment clair :) Lorsque l'on déclare une variable dans un script, celle ici est utilisable dans tout le script. On dit que cette variable est globale au script. si l'on creer une variable dans une fonction, celle ci sera globale à la fonction. Cela veut dire que la variable de la fonction ne sera pas accessible en dehors de la fonction. Une variable globale au script (1er cas) n'est pas accessible directement dans le script, il faut passer par le mot clef globals ou le tableau "super globale" $GLOBALS.
ATTENTION : une super globles c'est un tableau accessible n'importe ou dans le script, dans une fonction ... Il s'agit de $_GET, $_POST, $_COOKIE, $_SESSION, $_SERVER, $GLOBALS ....

exemple :

<?php
$truc = 'machin';

function mafonction() {
	$truc = 'bidule'; // <= $truc est globale a la fonction, sa modification n'entraine pas celle de $truc en dehors de la fonction
	echo $truc;
}

mafonction();
echo '<br/>';
echo $truc;
?>

On aura comme résultat :

bidule machin

Mais est ce que je peut acceder à une variable globale dans une fonction ? Il arrive parfois que l'on ai besoin d'utiliser, dans une fonction, la valeur d'une variable déclarée dans le script. Dans ce cas deux solutions :

  • Utiliser le mot clef global
  • Utiliser le passage d'argument des fonctions

Le mot clef global

Le mot clef global permet d'indiquer á php que la variable que l'on souhaite utilisée est globale :) exemple :

<?php
$truc = 'machin';

function mafonction() {
	global $truc;
	$truc = 'bidule'; // <= $truc est globale a la fonction, sa modification n'entraine pas celle de $truc en dehors de la fonction
	echo $truc;
}

mafonction();
echo '<br/>';
echo $truc;
?>

Cela va afficher :

bidule bidule

car la fonction va modifier la variable globale au script (donc en dehors de la fonction).

Le passage d'argument

Afin de faciliter l'utilisatin des fonctions, on peut leurs "passer" des valeurs en argument. Il suffit pour cela de les ajouters dans le prototype de la fonction.

exemple : function maFonction( $parametre1,$parametre2);

Il existe deux type de passage d'argument :

  • Par valeur
  • Par référence

Le passage par valeur :

Le passage par valeur c'est celui que l'on utilise implicitement à chaque fois que l'on créer une fonction avec un paramètre. exemple :

<?php
function maFonction($truc) {
	echo 'truc contient : ',$truc;
}
//utilisation
maFonction('une chaine de mot :)';
?>

La valeur de $truc est passée par valeur, C'est à dire qu'il s'agit d'une copie de la valeur d'origine.

Le passage par référence

Le passage par réfèrence est similaire à l'utilisation de pointeur en C. Il s'agit de passer "l'adresse mémoire" de la variable à utiliser, ce qui fait qu'au total c'est comme si on utilisé la variable qui est en dehors du script ! Le passage par référence ce fait simplement à l'aide de l'opérateur &. exemple :

<?php
function maFonction( &$var ) {
	echo $var;
	$var='chose';
}
$truc = 'truc';
echo $truc,'<br/>';
maFonction($truc);
echo '<br />',$truc;
?>

cela affiche :

truc truc chose

On constate donc que la variable $truc est modifée dans la fonction sans utiliser le mot clef globals ! Le passage par référence est la méthode de passage par défaut des objets en PHP 5. Cela permet par exemple de pouvoir travailler avec un seul objet que l'on fournit aux différentes classes et fonctions du script et ainsi éviter les copies mémoires multiple.

Les tableaux en php

Qu'est ce qu'un tableau ?

On peut voir un tableau comme des étagères. Celui ci peut donc contenir différentes informations suivant l'étage utilisé. Chaque information est à un "étage" qui lui est propre. Ces étages sont indexé numériquement \[1\] par défaut mais ces index peuvent aussi être aussi alpha numérique. Un tableaux peut être déclaré comme les autres variables à l'aide du mot clef var, ou simplement à la 1er utilisation.

Le mot clef array :

Array permet de déclarer une variable en tant que tableau. exemple :

<?php
//creation d'un tableau
var $tab[];
//ou
var $tab=array();
// initialisation du tableau &avrave;  la création
$tab = array('truc','machin','chose');
?>

On obtient :

array(3) { 0=> string(4) "truc" 1=> string(6) "machin" 2=> string(5) "chose" }

On peut aussi imposer les index :

<?php
// initialisation du tableau &avrave;  la création
$tab = array('lepremier'=>'truc','le2eme'=>'machin','ledernier'=>'chose');
?>

Ce qui donne :

array(3) { "lepremier"=> string(4) "truc" "le2eme"=> string(6) "machin" "ledernier"=> string(5) "chose" }

A Venir

  • register globals (autre tuto)
  • variable dynamique (autre tuto)

Notes

[1] Un index est un 'nom' unique permettant d'indentifier chaque élément. Un index numérique commence toujours à zéro