Mon premier programme en PHP (2e Partie)

Après avoir vu à quoi ressemblait un script php dans l’article précédent, nous allons survoler les principales instructions de ce langage :

- les variables
- les opérateurs
- les structures de contrôles
- les fonctions et les classes

Il s’agit bien d’un survol pour vous donner un aperçu synthétique, pour en savoir plus, consultez la documentation php complète en français :
http://fr.php.net/manual/fr/index.php

Revenir à la première partie

Les variables

notation
En php, tous les noms de variables sont précédés du caractère $ :

    $bidule='valeur contenue dans cette variable nommée bidule';
    echo $bidule;

pas de déclaration obligatoire
Contrairement à d’autres langages structurés, comme le Pascal, il est inutile de déclarer les variables avant de les initialiser, et le type des variables n’est pas prédéfini.

Donc pour utiliser une variable, il suffit de l’initialiser en lui affectant une valeur comme ci-dessus. Point final.
Le type (numérique, alphanumérique, virgule flottante etc…) des variables est susceptible de changer en cours de script. Ce qui veut dire que le code suivant est parfaitement valide en php, et ne provoque pas d’erreur « type mismatch » comme dans la plupart des langages [1]

    <?php
    $bidule='Pierre';
    echo "Bonjour,".$bidule;
    $bidule=1;
    echo "Vous avez reçu ".$bidule." message(s)";
    ?>

Les types de variables
Si les variables peuvent changer de type en fonction de ce que l’on met dedans, cela ne veut pas dire qu’elles n’ont pas de type défini. Simplement, ce type dépend du type de la valeur affectée à la variable.

Les types de valeurs disponibles en PHP
entier
décimal
chaîne de caractères
booléen [2] (PHP 4 et + seulement)
objet
tableau

Le cas particulier des tableaux

Le PHP permet de créer des variables tableaux à une dimension, grâce à la notation $tablo[indice]. L’indice peut être soit numérique ($tablo[1], $tablo[2]), soit alphanumérique ($tablo[« nom »], $tablo[« prenom »]) ce qui permet d’utiliser facilement les valeurs stockées dans un tableau.

Fidèle à sa gestion relâchée des variables, il n’est pas obligatoire de déclarer une variable tableau, on peut mélanger les indices numériques et alphanumériques dans un même tableau, on peut affecter des valeurs aux cellules du tableau dans n’importe quel ordre, et oublier d’initialiser toutes les cases du tableau.

Pour en savoir plus sur les particularités des tableaux en php :
Tester correctement variables et valeurs en php

notations d’incrémentation

Les notations d’incrémentation habituelles fonctionnent en php [3] :

Exemples valides :

    $i++; incrémente de 1
    $i+=1;
    $i--; décrémente de 1 à la variable

portée des variables

En php, la portée des variables est « locale » par défaut. On peut néanmoins définir des variables globales, locales, ou statiques.

Les variables globales sont disponibles dans tout le script (y compris à l’intérieur des fonctions). Les variables statiques (« static ») sont utiles au sein des fonctions.

constantes

Pour définir des valeurs réutilisables par tout un script, et qui ne changent pas pendant le script, l’idéal est de définir une constante.
Pour définir une constante, il suffit d’utiliser l’instruction define :

    //on suppose que $rayon a été initialisée par ailleurs
    define(PI,3.1416);
    $perimetre=2 * PI * $rayon;
    echo "Périmètre =".$perimetre;

Remarque : il n’y a pas de $ devant les noms de constante

variables externes

En php, il est très facile de récupérer les valeurs de variables définies en dehors du script, comme :
- les données postées depuis un formulaire (voir plus loin un exemple concret)
- les variables d’environnement

Toutes les variables d’environnement du serveur apache sont ainsi facilement récupérables :

Exemple :

    echo $PATH

($PATH donne accès au chemin local permettant d’accéder au script sur le serveur.)
remarque : les variables d’environnement ont des noms en majuscules [4]

Les opérateurs

Remarque : ces opérateurs existent dans de nombreux langages, avec des notations proches ou identiques.

Les opérateurs logiques

notation explicite notation alternative observations
and &&
or ||
xor $exp1 xor $exp2 vrai si ($exp1 est vraie ou $exp2 est vraie) mais faux si ($exp1 et $exp2 sont vraies)
not !
? : ($exp1) ? ($exp2) : ($exp3) renvoie la valeur de $exp2 si $exp1 est vraie, sinon la valeur de $exp3 (opérateur ternaire)

Les opérateurs de comparaison

notation explicite notation alternative observations
== $a==$b : renvoie vrai si les deux valeurs sont égales
=== (PHP4) $a===$b : renvoie vrai si les deux valeurs sont égales, et si les deux variables ont le même type
!= $a !=$b : renvoie vrai si les deux valeurs sont différentes
inférieur
inférieur ou égal
> supérieur
>= supérieur ou égal

Les opérateurs arithmétiques
Les quatre opérations sont disponibles (+,-,*,/) auquel s’ajoute l’opérateur % (modulo) : a%b donne le reste de la division de a par b.

Suite de l’article : structures de contrôles et fonctions
Revenir à la première partie

Philippe YONNET


[1] ce comportement très souple accélère considérablement la prise en main du langage par les débutants. Elle élimine tout un formalisme rébarbatif qui empêche habituellement les programmes écrits en langage structurés de fonctionner tant que les variables ne sont pas déclarées, initialisées et utilisées proprement. Mais, si l’on y prend pas garde, cela produit des bogues aléatoires particulièrement difficiles à détecter. Ce point est abordé dans un autre article :
Tester correctement variables et valeurs en php

[2] L’introduction du type booléen introduit plusieurs problèmes de compatibilité ascendante entre les scripts PHP3 et PHP4 : les valeurs retournées par plusieurs fonctions en cas d’échec ont changé de type, et certains tests sur ces valeurs ne fonctionnent plus

[3] Attention : si vous êtes habitués au comportement du C, sachez qu’avec les chaînes de caractères, PHP incrémente les valeurs comme en Perl : si $var contient « AA », après un $var++, $var contient « AB » !

[4] et gare aux confusions entre $path, variable initialisée dans le script, et la variable d’environnement $PATH