| Les expressions
sont la partie la plus importante de
PHP. En PHP, presque tout ce que vous
écrivez est une expression. La
manière la plus simple de définir
une expression est : "tout ce qui
a une valeur".
Les formes les plus simples d'expressions
sont les constantes et les variables.
Lorsque vous écrivez "$a
= 5", vous assignez la valeur
'5' à la variable $a. Bien
évidemment, '5' vaut 5 ou,
en d'autres termes, '5' est une expression
avec pour valeur 5 (dans ce cas, '5'
est un entier constant).
Après cette assignation, vous
pouvez considérer que $a a
pour valeur 5 et donc, écrire
$b = $a, revient à écrire
$b = 5. En d'autres termes, $a est
une expression avec une valeur de
5. Si tout fonctionne correctement,
c'est exactement ce qui arrive.
Un exemple plus complexe concerne
les fonctions. Par exemple, considérons
la fonction suivante :
Exemple - Affectation d'expressions
<?php
function foo () {
return 5;
}
?>
En supposant que vous êtes familiers
avec le concept de fonction, (si ce
n'est pas le cas, jetez un oeil au
chapitre concernant les fonctions),
vous serez d'accord que $c = foo()
est équivalent à $c
= 5, et vous aurez tout à fait
raison. Les fonctions sont des expressions
qui ont la valeur de leur "valeur
de retour". Si foo() renvoie
5, la valeur de l'expression 'foo()'
est 5. Habituellement, les fonctions
ne font pas que renvoyer une valeur
constante mais réalisent des
traitements.
Bien sûr, les valeurs en PHP
n'ont pas à être des
valeurs numériques, comme c'est
souvent le cas. PHP supporte quatre
types de variables scalaires : les
valeurs entières (entier),
les nombres à virgule flottante
(float), les chaînes de caractères
(chaîne de caractères)
et les booléens (boolean).
(une variable scalaire est une variable
que vous ne pouvez pas scinder en
morceaux, au contraire des tableaux
par exemple). PHP supporte aussi deux
types composés : les tableaux
et les objets. Chacun de ces types
de variables peut être affecté
ou renvoyé par une fonction.
Les utilisateurs de PHP/FI 2 ne verront
aucun changement. Malgré tout,
PHP va plus loin dans la gestion des
expressions, comme le font d'autres
langages. PHP est un langage orienté
expression, dans le sens où
presque tout est une expression. Considérons
l'exemple dont nous avons déjà
parlé, '$a = 5'. Il est facile
de voir qu'il y a deux valeurs qui
entrent en jeu ici, la valeur numérique
constante '5' et la valeur de la variable
$a qui est mise à jour à
la valeur 5. Mais, la vérité
est qu'il y a une autre valeur qui
entre en jeu ici et c'est la valeur
de l'assignation elle-même.
L'assignation elle-même est
assignée à une valeur,
dans ce cas-là 5. En pratique,
cela signifie que '$a = 5' est une
expression qui a pour valeur 5. Donc,
écrire '$b = ($a = 5)' revient
à écrire '$a = 5; $b
= 5;' (un point virgule marque la
fin d'une instruction). Comme les
assignations sont analysées
de droite à gauche, vous pouvez
aussi bien écrire '$b = $a
= 5'.
Un autre bon exemple du langage orienté
expression est la pre-incrémentation
et la post-incrémentation,
(ainsi que la décrémentation).
Les utilisateurs de PHP/FI 2 et ceux
de nombreux autres langages sont habitués
à la notation "variable++"
et "variable--". Ce sont
les opérateurs d'incrémentation
et de décrémentation.
En PHP/FI 2, l'instruction '$a++'
n'a aucune valeur (c'est-à-dire
que ce n'est pas une expression) et
vous ne pouvez donc pas l'utiliser.
PHP ajoute les possibilités
d'incrémentation et de décrémentation
comme c'est le cas dans le langage
C. En PHP, comme en C, il y a deux
types d'opérateurs d'incrémentation
(pre-incrémentation et post-incrémentation).
Les deux types d'opérateur
d'incrémentation jouent le
même rôle (c'est-à-dire
qu'ils incrémentent la variable).
La différence vient de la valeur
de l'opérateur d'incrémentation.
L'opérateur de pre-incrémentation,
qui s'écrit '++$variable',
évalue la valeur incrémentée
(PHP incrémente la variable
avant de lire la valeur de cette variable,
d'où le nom de pre-incrémentation).
L'opérateur de post-incrémentation,
qui s'écrit '$variable++',
évalue la valeur de la variable
avant de l'incrémenter (PHP
incrémente la variable après
avoir lu sa valeur, d'où le
nom de post-incrémentation).
Un type d'expression très commun
est l'expression de comparaison. Ces
expressions sont évaluées
à 0 ou 1, autrement dit FALSE
ou TRUE, respectivement. PHP supporte
les opérateurs de comparaison
> (plus grand que), => (plus
grand ou égal), == (égal
à), < (plus petit que),
<= (plus petit ou égal).
Ces expressions sont utilisées
de manière courante dans les
instructions conditionnelles, comme
l'instruction if.
Pour le dernier exemple d'expression,
nous allons parler des combinaisons
d'opérateurs/assignation. Vous
savez que si vous voulez incrémenter
la variable $a d'une unité,
vous devez simplement écrire
'$a++'. Mais si vous voulez ajouter
la valeur '3' à votre variable
? Vous pouvez écrire plusieurs
fois '$a++', mais ce n'est pas la
meilleure des méthodes. Un
pratique plus courante est d'écrire
'$a = $a + 3'. L'expression '$a +
3' correspond à la valeur $a
plus 3, et est de nouveau assignée
à la variable $a. Donc, le
résultat est l'incrémentation
de 3 unités. En PHP, comme
dans de nombreux autres langages comme
le C, vous pouvez écrire cela
de manière plus concise, manière
qui avec le temps se révélera
plus claire et plus rapide à
comprendre. Ajouter 3 à la
valeur de la variable $a peut s'écrire
'$a += 3'. Cela signifie précisément
: "on prend la valeur de la variable
$a, on ajoute la valeur 3 et on assigne
cette valeur à la variable
$a". Et pour être plus
concis et plus clair, cette expression
est plus rapide. La valeur de l'expression
'$a += 3', comme l'assignation d'une
valeur quelconque, est la valeur assignée.
Il est à noter que ce n'est
pas 3 mais la combinaison de la valeur
de la variable $a plus la valeur 3.
(c'est la valeur qui est assignée
à la variable $a). N'importe
quel opérateur binaire peut
utiliser ce type d'assignation, par
exemple '$a -= 5' (soustraction de
5 de la valeur de la variable $a),
'$b *= 7' (multiplication de la valeur
de la variable $b par 7).
Il y a une autre expression qui peut
paraître complexe si vous ne
l'avez pas vue dans d'autres langages,
l'opérateur conditionnel ternaire
: Exemple 14-2. L'opérateur
conditionnel ternaire
<?php
$first ? $second : $third
?>
Si la valeur de la première
sous-expression est vraie (différente
de 0), alors la deuxième sous-expression
est évaluée et constitue
le résultat de l'expression
conditionnelle. Sinon, c'est la troisième
sous-expression qui est évaluée
et qui constitue le résultat
de l'expression.
Les exemples suivants devraient vous
permettre de mieux comprendre la pre-incrémentation,
la post-incrémentation et le
concept des expressions en général
:
Exemple - Pré et post-incrémentation
:
<?php
function double($i) {
return $i*2;
}
$b = $a = 5; /* Assigne la valeur
5 aux variables $a et $b */
$c = $a++; /* Post-incrémentation
de la variable $a et assignation de
la valeur à la variable $c
*/
$e = $d = ++$b; /* Pre-incrémentation,
et assignation de la valeur aux
variables $d et $e */
/* à ce niveau, les variables
$d et $e sont égales à
6 */
$f = double($d++); /* assignation
du double de la valeur de $d à
la variable $f ($f vaut 12),
puis incrémentation de la valeur
de $d */
$g = double(++$e); /* assigne deux
fois la valeur de $e après
incrémentation, 2*7 = 14 to
$g */
$h = $g += 10; /* Tout d'abord, $g
est incrémentée de 10,
et donc $g vaut 24.
Ensuite, la valeur de $g, (24) est
assignée à la variable
$h,
qui vaut donc elle aussi 24. */
?>
Au début de ce chapitre, nous
avons dit que nous allions décrire
les différents types d'instructions,
et donc, comme promis, nous allons
voir que les expressions peuvent être
des instructions. Mais, attention,
toutes les expressions ne sont pas
des instructions. Dans ce cas-là,
une instruction est de la forme 'expr
;', c'est-à-dire, une expression
suivie par un point-virgule. L'expression
'$b = $a = 5;', '$a = 5' est valide,
mais ce n'est pas une instruction
en elle-même. '$b = $a = 5'
est une instruction valide.
La dernière chose qui mérite
d'être mentionnée est
la véritable valeur des expressions.
Lorsque vous faites des tests sur
une variable, dans une boucle conditionnelle
par exemple, cela ne vous intéresse
pas de savoir quelle est la valeur
exacte de l'expression. Mais vous
voulez seulement savoir si le résultat
signifie TRUE ou FALSE (PHP n'a pas
de type booléen). La véritable
valeur d'une expression en PHP est
calculée de la même manière
qu'en Perl. Toute valeur numérique
différente de 0 est considérée
comme étant TRUE. Une chaîne
de caractères vide et la chaîne
de caractère 0 sont considérées
comme FALSE. Toutes les autres valeurs
sont vraies. Avec les types de variables
non-scalaires (les tableaux et les
objets), s'ils ne contiennent aucun
élément, renvoient FALSE,
sinon, ils renvoient TRUE.
PHP propose une implémentation
complète et détaillée
des expressions. PHP documente toutes
ses expressions dans le manuel que
vous êtes en train de lire.
Les exemples qui vont suivre devraient
vous donner une bonne idée
de ce qu'est une expression et comment
construire vos propres expressions.
Dans tout ce qui va suivre, nous écrirons
expr pour indiquer toute expression
PHP valide.
Copyright © 2001-2006 The
PHP Group. All rights reserved.
|