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).
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.
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; // .... ?>
Une variable peut etre créer de deux manières différentes :
L'affectation est réalisé par l'opérateur égale ( = ). exemple :
<?php $maVariable = 'une chaine de caractère'; ?>
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'; ?>
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 :
Il en existe d'autre, vous pouvez consulter la documentation de php pour de plus ample information (Les différents types en php).
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 ?>
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 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 machinMais 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 :
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 bidulecar la fonction va modifier la variable globale au script (donc en dehors de la fonction).
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 :
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 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 choseOn 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.
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.
Array permet de déclarer une variable en tant que tableau. exemple :
<?php //creation d'un tableau var $tab[]; //ou // initialisation du tableau &avrave; la création ?>
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 ?>
Ce qui donne :
array(3) { "lepremier"=> string(4) "truc" "le2eme"=> string(6) "machin" "ledernier"=> string(5) "chose" }A Venir
[1] Un index est un 'nom' unique permettant d'indentifier chaque élément. Un index numérique commence toujours à zéro