Initiation au langage PHP

PHP est un langage de script côté serveur au même titre que ASP (réponse de MS) ou JSP (solution web à partir du langage Java qui n'a rien à voir avec Javascript).
Côté serveur ? Côté serveur implique qu'un serveur analyse et décode le langage. Le résultat de ce décodage est un fichier ne contenant que du code HTML là où étaient présentes les instructions en PHP.
Côté serveur est à différencier de "côté client", auxquels appartiennent les langages Javascript et ActionScript (Flash), où c'est le navigateur (= le client) qui se charge d'analyser et de décoder le langage.

Un langage de script est à contrario d'un langage compilé vérifié lors de son exécution : ça n'est qu'au moment de l'exécuter que l'on peut observer s'il y a des bugs de type erreur de syntaxe.

Pour tester, il faut utiliser un serveur local : wampserver, easyphp, etc.
Ils recréent le fonctionnement d'un serveur tels qu'il y en a dans les centres d'hébergement.

Aucune instruction en PHP n'est présente dans le fichier transmis par le serveur au navigateur.

A quoi cela sert-il ?

Dynamiser son site.
Les langages de script côté serveur permettent de créer une page html ou de modifier son contenu pour la rendre plus personnelle.
Lorsque vous vous loguez sur un site et que par la suite figure à un endroit votre nom, pseudo, avatar, etc., il y a un langage de script derrière.

Pour que le serveur sache qu'une portion de code en PHP est présente dans la page demandée, il faut que le code soit placé entre les balises <?php et ?>.
Ces deux balises définissent un bloc PHP entre elles, dans lequel on insère les instructions. Un bloc PHP peut contenir plusieurs instructions.
Les balises HTML présentent dans un bloc PHP sont obligatoirement entre quotes : elles doivent être considérées comme des chaînes de caractères.

<p><?php "ici mon instruction en php" ?></p>
Toute instruction PHP doit être placée entre les balises PHP.

Programmer

Deux liens d'intérêt : le premier explique et forme à l'utilisation des algorithmes ; le deuxième est une mine d'informations sur les fonctions présentes dans la librairie PHP. Le lien indiqué montre notamment les différentes fonctions sur les chaînes de caractères.

Fonction echo

Cette fonction permet d'inscrire un contenu sur la page.

echo "Bienvenue sur ma page";

Cette ligne est une instruction. En PHP, les instructions se terminent avec un ";".
Cette instruction affiche une chaîne de caractères. Pour distinguer une chaine de caractère, on préfixe et suffixe celle-ci par des quotes doubles ou simples, mais toujours par paire.

Exercice n°1

Créez un fichier nommé "index.php" (extension ".php") et faîtes ce qui suit :

  1. insérez les balises attendues pour une page HTML normale (html, head, body)
  2. placez une balise paragraphe dans le corps de la page
  3. placez les balises ouvrante et fermante pour indiquer une portion en PHP (<?php .... ?>) à l'intérieure de la balise p
  4. entre les balises inscrivez echo "hello world"
  5. terminez l'instruction par un point virgule ;
  6. enregistrez le fichier en "index.php"
  7. lancez le logiciel qui fait office de serveur (easyPHP, mamp, etc.)
  8. accédez au dossier "local" ou "www" pour y placer votre fichier
  9. ouvrez un navigateur et allez à l'adresse locale (127.0.0.1 ou localhost)
  10. observez
  11. modifiez ce qui se trouve entre double quote

Commenter

Usage : renseigner, conserver, débugger.

Pour créer des commentaires, je n'ai besoin de commenter qu'une ligne ou j'ai besoin de commenter plusieurs lignes d'un coup :

// je commente sur une ligne : juste besoin d'indiquer quand cela commence
/* je commente sur plusieurs lignes :
nécessité de définir quand cela
commence et quand cela se termine */

Je peux commenter plusieurs lignes de suite en utilisant le commentaire sur une ligne mais ça m'oblige à me mettre // au début de chaque ligne concernée. Peu pratique !

Exercice n°2

Recopiez le code suivant dans un fichier php et commentez le là où c'est nécessaire de la meilleure des manières :

<?php
ceci est un commentaire sur une ligne
echo "<strong>Un texte à afficher en gras</strong>";    ici encore un commentaire
ceci est un commentaire sur plusieurs lignes
ceci est la 2ème ligne du commentaire sur plusieurs lignes
echo "<br>Un autre texte à afficher";		encore un commentaire sur une ligne
?>
                    

La page correctement commentée ne doit afficher que ce qui suit :
Un texte à afficher en gras
Un autre texte à afficher

Variables

Les variables permettent de stocker une information susceptible d'évoluer durant l'exécution du programme.

Une variable PHP est définie grâce au symbole $ qui précède les caractères qui constituent son nom : $nom_de_variable
Le nom de la variable :

  1. doit commencer par une lettre ou le caractère underscore ( _ )
  2. ne peut pas commencer par un chiffre
  3. doit contenir une ou plusieurs lettres, un ou plusieurs chiffres et/ou un ou plusieurs underscores
  4. ne doit contenir aucun espace
  5. est sensible à la casse (minuscule / majuscule) : $nom_de_variable et $NOM_de_variable sont 2 variables différenciées
  6. doit eviter de contenir des caractères accentués, source de problème avec l'encodage du fichier ($étape -> $etape)

Le nom d'une variable doit être défini de manière à aider à la compréhension des instructions / du programme : $compteur, $ville.

Il existe 2 grandes conventions de notation : soit $code_postal, soit $codePostal.

Exercice n°3

Parmi les propositions suivantes de nom de variables lesquelles sont incorrectes et pourquoi :

  1. $toto
  2. $_
  3. $num-telephone
  4. $villeDu57
  5. $3eme_session
  6. $_support

Type de variable

Le contenu d'une variable (sa valeur) peut être de différents types :

  • types scalaires
    • type booléen (bool) : définit ce qui est "vrai" ou "faux" (true / false)
    • type entier (integer) : les nombres entiers
    • type décimal (float ou double) : les nombres décimaux ; utilisation du point pour la partie décimale (19.99)
    • type chaîne de caractères (string): tout ce qui est assimilé à du texte
  • types composés
    • type tableau (array) : organisation structurée de données
    • type objet (object)
  • types spéciaux
    • type ressource (resource): des accès à des éléments externes (fichier texte, image, etc.)
    • type NULL : correspond à (vide) ; cas d'une variable non définie

Affectation

L'affectation est l'instruction de base concernant une variable : on attribue un contenu/une valeur à notre variable. L'affectation se fait en utilisant l'opérateur =.

$prix_panier = 12.95;

En algorithme, une affectation est représentée ainsi :

ma_variable  ma_valeur

ce qui a l'avantage d'être moins source d'erreur.

Une instruction de type affectation stocke dans la variable placée à gauche de l'opérateur '=' le résultat situé à droite de l'opérateur.

$prix_panier = 12.95;    //correspond à $prix_panier  12.95

L'intérêt de créer une variable est de lui faire stocker une information que l'on souhaite conserver dans le but de l'utiliser plus tard dans le cours du programme (un calcul, un affichage, etc.)
Par exemple, le nom d'un acheteur connecté sur un site e-commerce est stocké ainsi pour servir à divers endroits du site ("Bienvenue Untel", "Si vous n'êtes pas Untel, merci de vous déconnecter", etc.)

L'affichage du contenu de la variable peut se faire en utilisant la fonction echo vue plus tôt :

echo $prix_panier;

Exercice n°4

Dans une page PHP

  1. créez un bloc PHP
  2. définissez une variable en lui choississant un nom
  3. affectez lui la valeur 8
  4. en dehors du bloc PHP, ajoutez une balise paragraphe
  5. à l'intérieur du paragraphe, ajoutez un autre bloc PHP
  6. à l'intérieur du bloc, placez l'instruction pour afficher le contenu de votre variable

Chaîne de caractères

Comme vu plus haut, le type chaîne de caractères se définit avec les simples ou les doubles quotes.

$ville = 'Metz';
$ville = "Metz";
$code_postal = "57000";
Les valeurs numériques sur lesquelles réaliser un calcul mathématique n'a aucun sens, doivent être considérées en type chaîne.

La chaîne de caractères est un élément très commun en programmation. Tout ce qui n'est pas un mot clé de PHP (comme echo), une variable, une constante (cela sera vu plus loin) ou une valeur numérique, doit être considéré comme une chaîne de caractères et dans ce cas, doit être encadré par des simples ou des doubles quotes.

Du code HTML manipulé dans un bloc PHP est donc obligatoirement une chaîne de caractères.

Exercice n°5

Dans une page PHP

  1. créez un bloc PHP
  2. créez une variable nommée prenom et affectez lui votre prénom
  3. créez une variable nommée nom et affectez lui votre nom
  4. faites un affichage du contenu des 2 variables

Si dans la chaîne de caractères figure le caractère utilisé pour encadrer la chaîne (simple ou double quote), cela va poser problème lors de l'execution du code.
Si j'écris ceci :

$citation = "Jules Verne : "On peut braver les lois humaines, mais non résister aux lois naturelles."";

le décodeur de PHP va considérer que la chaîne de caractères commence à la 1ère quote rouge et s'arrête à la 1ère quote bleue et donc ce qui est après (On peut braver...) va entraîner un bug car ça n'est pas une instruction PHP valide.
La solution pour que tout les quotes qui servent à la citation ne soient pas considérés comme des quotes délimitant la chaîne de caractères est donc d'échapper les quotes de la citation en utilisant le caractère \ (altgr + 8) devant le caractère.

$citation = "Jules Verne : \"On peut braver les lois humaines, mais non résister aux lois naturelles.\"";
$saison = 'L\'automne est à nos portes';

Exercice n°6

Dans une page PHP

  1. créez un bloc PHP
  2. recopiez les instructions suivantes :
    • echo Nous devons à Ann Landers cette phrase célèbre : On n'a jamais autant besoin de vacances que lorsqu'on en revient.
    • echo Robert Orben a déclaré : Être en vacances, c'est n'avoir rien à faire et avoir toute la journée pour le faire.
  3. en plaçant des caractères d'échappement, faites en sorte que les phrases s'affichent correctement

Concaténation

La concaténation est probablement l'instruction la plus courante portant sur les chaînes. Il s'agit de "coller" 2 éléments de type chaîne (généralement) en utilisant le caractère point (appelé alors opérateur de concaténation) entre les éléments.

echo 'La ville de '.'Metz';
Considérez l'opérateur de concaténation comme un point de glue entre deux éléments.

Il est aussi possible de concaténer une chaîne avec une variable ou deux variables :

echo 'Le prix TTC est de '.$prix_panier_TTC;

Dans le cas de la présentation d'une page, la concaténation va permettre de mixer balises HTML et variables PHP :

echo '<p>Le prix TTC est de '.$prix_panier_TTC.'.</p>';
echo '<p>Bienvenue '.$prenom.' sur votre espace membre.</p>';

Observez sur le dernier exemple ce qui est chaîne de caractères et le reste.

Exercice n°7

Dans une page PHP

  1. créez un bloc PHP
  2. à l'intérieur du bloc définissez
    • une variable contenant votre prénom
    • une variable contenant Metz
    • une variable contenant 57000
  3. en dehors du bloc PHP, insérez une balise paragraphe
  4. à l'intérieur de la balise
    • affichez "Bonjour" suivi de votre prénom en utilisant la variable contenant votre prénom
    • affichez "57000 Metz" en utilisant les variables contenant le code postal et la ville

Copie de contenu

Il est possible de copier le contenu d'une variable (sa valeur) dans une autre.

$toto = 10;
$titi = 32;
$titi = $toto;
echo $titi;	//affichera 10

Souvenez vous la représentation en algorithmique :

toto  10
titi  32
titi  toto
Les valeurs numériques pouvant servir pour un calcul ne doivent pas être traitées comme des chaînes de caractères.

Si par la suite, $toto est modifié, la valeur de $titi elle, restera inchangée :

$toto = 21;
echo $titi;	//affichera 10 encore

Le contenu de $toto a été copié dans $titi.

Exercice n°8

1. Analysez les instructions suivantes et donnez pour chaque ligne, la valeur des variables :

$toto = 0; $titi = 0;
$toto = 12;
$titi = 3;
$titi = $toto + 3;
$toto = $titi - 6;

2. Comment faire pour échanger les valeurs de 2 variables ?

$var_a = 9;
$var_b = 3;

($var_a doit contenir 3 et $var_b doit contenir 9 à la fin)

3. Analysez les instructions suivantes et donnez pour chaque ligne, la valeur des variables :

$livre = 12;
$cahier = 7;
$livre = $livre + $cahier;
$cahier = $livre - $cahier;
$livre = $livre - $cahier;

Opérateurs mathématiques

Les opérateurs mathématiques comprennent :

  • + : addition
  • - : soustraction
  • * : multiplication
  • / : division
  • % : retourne le reste d'une division (25 divisé par 7 = 3 x 7 + 4 donc 25 % 7 = 4)

Les affectations impliquant une opération et une autre variable sont courantes :

$prix_panier_TTC = $prix_panier * 1.20;

Dans l'instruction ci-dessus, la valeur de $prix_panier majorée de la TVA est affectée à la variable $prix_panier_TTC.
Il existe également une écriture simplifiée d'opération quand une instruction porte sur une seule et même variable :

$compteur += 9;	//équivalent à $compteur = $compteur + 9

Exercice n°9

Retranscrivez les opérations suivantes en instruction PHP en affectant le résultat obtenu à une variable :

  • 12 plus 3
  • 56 moins 39
  • 12 fois 13
  • 145 divisé par 7
  • retrouvez le reste de la division précédente

Définissez une variable nommée "stock", affectez lui la valeur 1536 puis retranscrivez les opérations suivantes en affectant le résultat dans une variable "etat" :

  • stock plus 35
  • stock moins 176
  • stock fois 5
  • stock divisé par 8
  • retrouvez le reste de la division précédente

Constante

Les constantes contiennent une valeur qui ne change pas durant l'exécution du programme. Néanmoins leur intérêt est de stocker une valeur qui peut être amenée à changer durant la vie du programme, comme la valeur de la TVA, le nom du site web ou du logiciel, l'email de contact technique, etc.

Pour définir une constante, on utilise la fonction define qui attend 2 paramètres :

  1. le nom de la constante sous la forme d'une chaîne de caractère (mêmes règles de nommage que pour une variable)
  2. la valeur de la constante de type entier, décimal ou chaîne de caractères (int, float ou string)
define('TVA_FR', 1.20);
define('CAPITALE_AUSTRALIE', 'Canberra');

Il existe une autre méthode pour définir une constante : on utilise le mot clé const en préfixe durant la déclaration uniquement.

const TVA_FR = 1.20;
const CAPITALE_AUSTRALIE = 'Canberra';

Pour utiliser le contenu d'une constante, il suffit d'inscrire son nom ; attention, le nom d'une constante n'est pas précèdé du symbole $ !
Toutes les opérations qui peuvent impliquer une variable (sauf celles qui changent sa valeur, comme l'affectation) peuvent se faire également avec une constante (opération arithmétique, concaténation, etc.)

$prix_panier_TTC = $prix_panier * TVA_FR;
Par convention, le nom des constantes est inscrit en majuscule afin de les distinguer facilement.

Exercice n°10

Dans une page PHP

  1. créez un bloc PHP
  2. définissez 2 constantes chacune pour :
    • le nom de l'université avec comme valeur : Université de Lorraine
    • les villes de l'université avec comme valeur : Metz et Nancy
  3. affichez les valeurs des constantes créées
  4. concatenez les constantes de manière à afficher :
Les villes de Metz et Nancy accueillent l'Université de Lorraine.

Opérateurs booléens ou opérateurs logiques

Les opérateurs logiques servent dans les tests de logique. Les tests de logique permettent d'orienter l'exécution d'un programme vers une série d'instruction ou une autre : si l'utilisateur connecté est une femme, il faut lui proposer les promotions sur des vêtements féminins, si c'est un homme, les promotions sur ceux masculins.
Dans certains cas, plusieurs critères (~ tests logiques) sont nécéssaires pour décider d'une action (~ série d'instructions) à réaliser :

  • S'il fait plus de 17°C et qu'il y a le soleil, je vais en ville à pied;
  • si Pierre me prête sa voiture OU que je peux en louer une, je vais au ski cet hiver.

Le ET et le OU inscrits ci-dessus sont des opérateurs de logique ; les tests de logique de part et d'autre de ces opérateurs vont avoir un résultat (vrai ou faux) et, en fonction de l'opérateur, la valeur de l'ensemble des tests va être déterminé (là aussi, soit vrai, soit faux).

Il existe 4 opérateurs servant aux opérations de tests :

  • le "et commercial" & qui signifie "et"
  • le pipe | (algr + 6) qui signifie "ou"
  • "xor" qui signifie "ou bien"
  • le point d'exclamation ! qui signifie "non" (dans le sens "n'est pas")

En PHP, ceux-ci sont doublés pour les instructions.

true && true;
true || true;
Vrai et faux s'écrivent true et false en anglais.

Attention lors de la création d'une variable booléenne, il ne faut pas mettre les quotes au niveau de la valeur :

$est_en_php = "true"; //on crée une chaine de caractère
$est_en_php = true; //on crée une variable  booléenne

Avec ces opérateurs, il existe des règles ou tables dites de Boole, du nom du mathématicien les ayant déterminées.

Doodle de Google pour George Boole - 2 nov 2015

Table du Et

Il faut que les 2 opérandes soient vrais pour que l'ensemble retourne vrai.

&& vrai faux
vrai V F
faux F F
S'il fait plus de 17°C et qu'il y a le soleil, je vais en ville à pied.
  1. il fait 21°C et le soleil est présent, alors ?
  2. il fait 15°C et le soleil est présent, alors ?
  3. il fait 21°C et il pleut, alors ?
  4. il fait 7°C et il pleut, alors ?

Table du Ou

Il faut que l'un des 2 opérandes soit vrai pour que l'ensemble retourne vrai.

|| vrai faux
vrai V V
faux V F
Si Pierre me prête sa voiture OU que je peux en louer une, je vais au ski cet hiver.
  1. Pierre me prête sa voiture et je peux en louer une, alors ?
  2. Pierre ne me prête pas sa voiture et je peux en louer une, alors ?
  3. Pierre me prête sa voiture et je ne peux pas en louer une, alors ?
  4. Pierre ne me prête pas sa voiture et je ne peux pas en louer une, alors ?

Table du XOR

Il faut que les opérandes soient de valeur opposée pour que l'ensemble retourne vrai.

XOR vrai faux
vrai F V
faux V F

Table du Non

Renvoie la valeur opposée de l'opérande.

! vrai faux
non F V

Exercice n°11

Déterminez le résultat des tests suivants :

  1. true && true
  2. true && !false
  3. false || false
  4. !true
  5. true && false
  6. false && !false
  7. false || true
  8. true || (true || false)
  9. !false && (true || false)
  10. true && !(true || false)

Opérateurs de comparaison

Comme en mathématique, il est possible de comparer des valeurs entre elles avec :

  • est égal à : $x == $y
  • est strictement supérieur : $x > $y
  • est supérieur ou égal : $x >= $y
  • est strictement inférieur : $x < $y
  • est inférieur ou égal : $x <= $y
  • est différent de : $x != $y
La comparaison d'égalité nécessite un double égal (==).

Il n'est pas possible d'écrire 10 <= $x < 100 directement mais il faut décomposer en deux opérations :

($x >= 10) && ($x < 100);

Une erreur courante consiste à n'écrire qu'un seul symbole = pour réaliser une opération comparaison.

Cela revient à faire une affectation (=) et non une comparaison d'égalité (==).

$est_complet = false;
($est_complet = true); 	//renverra toujours true car l'affectation est valide et $est_complet prend la valeur true

au lieu de

$est_complet = false;
($est_complet == true); 	//dépendra de la valeur de $est_complet : ici ça renverra false du coup

La suite du cours : les structures avancées en PHP.