BRE03

PHP Jour 1 : du JS au PHP

Les contenus du cours BRE03 Web Dev Course © 2024 par Mari Doucet sont sous licence CC BY-NC-SA 4.0

Les notions du jour

Présentation de PHP

Le PHP est un langage de programmation qui a de multiples usages. Aujourd’hui il est majoritairement utilisé pour la création de sites internet dynamiques, il peut toujours être utilisé comme un langage de script dans le terminal.

Dans le cadre du développement de sites internet, PHP est utilisé comme langage backend.

La programmation backend

Dans le cadre du développement web le code backend est celui qui est exécuté côté serveur (Lien du cours sur la relation client / serveur). Il s’occupe de réceptionner les demandes utilisateurs, d’aller chercher les données dans une base de données ou via une API.

Dans le cas spécifique de PHP (ce n’est pas le cas de tous les langages backend), il peut également s’occuper de générer le HTML des pages avec des informations dynamiques (issues de la base de données ou d’une API).

Structure d’un fichier php

Le PHP peut soit être présent et injecté dans un fichier HTML soit il peut être isolé dans un fichier.

Dans tous les cas, le code PHP se trouve dans un fichier .php compris entre les balises PHP :

fichier.php

<?php
    // mon code php
?>

Les variables

Pour déclarer une variable en PHP, pas besoin de mot clé, par contre le nom d’une variable est toujours précédé d’un $ :

$message = "Hello"; // la variable $message contient Hello
$age = 42; // la variable $age contient 42

Même chose quand vous voulez manipuler une variable, le $ est toujours là :

$nb1 = 35;
$nb2 = 7;

$sum = $nb2 + $nb1; // $sum contient 42

Apparté : les références

Vous verrez parfois une syntaxe du type &$variable. Il s’agit d’une référence. Vous n’aurez pas à les utiliser et le cours ne les utilisera pas.

Il s’agit d’un héritage des langages qui manipulent manuellement la mémoire, comme le C++ ou le C où elles sont très utilisées. Or, PHP est codé en C et en faisait un usage plus répandu dans les premières versions du langage.

La version courte pour les curieux-se-s :

Une référence stocke l’adresse d’une variable dans la mémoire et non pas le contenu de cette variable, du coup cela permet de garder une version à jour du contenu d’une variable même s’il a été modifié ailleurs :

$message = "Hello"; // $message contient Hello
$reference = &$message; // $reference contient Hello

$message = "Hello World";

// $reference à qui je n'ai pas touché contient maintenant Hello World

Les types

Les chaînes de caractères

Il existe deux façons de déclarer des chaînes de caractères en PHP :

$message = "Hello !";
$message = 'Hello !';

La différence entre les doubles quotes "" et les simples quotes '' c’est au niveau de la concaténation qu’elle se passe.

La concaténation

En PHP l’opérateur de concaténation est le . (pour rappel, c’est le + en JavaScript) :

$message = 'Hello'; // $message contient Hello
$message = 'Hello '.'World!'; // $message contient Hello World!

Pour la concaténation, on utilise donc les simples quotes : ''

L’injection

Comme en JavaScript, vous pouvez composer vos chaînes de caractère en y injectant directement des variables :

$name = "Hugues"; // $name contient Hugues
$message = "Hello $name !"; // $massage contient Hello Hugues !

Si vous devez utiliser quelque chose de plus complexe qu’une variable (par exemple le retour d’une fonction) la syntaxe change un peu :

$name = "HUGUES"; // $name contient HUGUES
$message = "Hello {strtolower($name)} !"; // $message contient Hello hugues !

Lorsque l’on manipule des chaines de caractères avec de l’injection de variables, on utilise les doubles quotes : "".

Les nombres

PHP est un langage plus typé que ne l’est JavaScript, une des différences notables, c’est qu’il existe deux types différents pour représenter les nombres entiers et les nombres décimaux.

💡 Rappel de maths : un nombre entier est un nombre sans virgule, un nombre décimal est un nombre avec virgule.

int : nombre entier

int (abbréviation d’integer) représente un nombre entier.

$nb = 42; // c'est un int

float : nombre décimal

float (en anglais informatique la virgule est appelée floating point) représente un nombre décimal.

$nb = 4.2; // c'est un float

Booléen

Le principe ne change pas par rapport à JavaScript : il vaut true ou false. Le type s’appelle bool.

Les tableaux

Les tableaux existent également en PHP. Comme en JavaScript, ils fonctionnent sur un système $tableau[key] = $value et sont numérotés en commençant par 0.

$numbers = [23, 45, 18];
$animals = ["Cat", "Dog", "Rabbit"];

En PHP, la clé d’un tableau n’est pas nécessairement un nombre, on peut par exemple utiliser des chaînes de caractères. On parle dans ce cas-là de tableaux associatifs.

Tableaux associatifs

$user = [
    "firstName" => "Hugues",
    "lastName" => "Froger"
];

$firstName = $user["firstName"]; // $firstName contient Hugues

Les conversions de types

Qui dit langage typé dit avoir parfois besoin de faire basculer une variable d’un type à un autre, on appelle ça une conversion de type (cast en anglais). La syntaxe pour convertir un type en un autre est la même pour tous les types dits primitifs (int, float, bool, string) :

$string = (string) 42; // '42'
$int = (int) '42'; // 42
$float = (float) '4.2'; // 4.2
$bool = (bool) 1; // true

echo : afficher une variable

Pour afficher une variable de type primitif, vous pouvez utiliser echo $variable :

$user = [
    "firstName" => "Hugues",
    "lastName" => "Froger"
];

$firstName = $user["firstName"];

echo $firstName; // affichera Hugues
echo $user["lastName"]; // affichera Froger

Exercices sur les variables et les types

Lien des consignes des exercices sur les variables et les types

Les structures de contrôle

Opérateurs de comparaison

Les opérateurs de comparaisons suivants sont les mêmes qu’en JavaScript :

Les conditions

Les conditions aussi fonctionnent de la même façon en PHP :

if($age > 65)
{
    echo "Senior";
}
else if($age >= 18 && $age <= 65)
{
    echo "Adulte";
}
else
{
    echo "Enfant";
}

Les boucles

Pour connaitre la longueur d’un tableau en PHP, il faut utiliser la fonction count().

while

La syntaxe des boucles while est sensiblement la même qu’en JavaScript :

$animals = ["Cat", "Dog", "Rabbit"];
$i = 0;

while($i < count($animals))
{
    echo " {$animals[$i]} <br>";
    $i++;
}

for

La boucle for ne change pas non plus :

$animals = ["Cat", "Dog", "Rabbit"];

for($i = 0; $i < count($animals); $i++)
{
    echo " {$animals[$i]} <br>";
}

foreach

Une boucle qui n’a pas vraiment d’équivalence en JavaScript, c’est la boucle foreach. Dans sa version simple, sa syntaxe ressemble à celle des boucles for(let element of list).

$animals = ["Cat", "Dog", "Rabbit"];

foreach($animals as $animal)
{
    echo "$animal <br>";
}

Il existe une syntaxe qui permet de récupérer la clé en plus de la valeur :

$animals = ["Cat", "Dog", "Rabbit"];

foreach($animals as $key => $animal)
{
    echo "Animal numéro $key : $animal <br>";
}

Exercices sur les conditions et les boucles

Lien des consignes des exercices sur les boucles et les conditions

Les fonctions

Déclarer une fonction

Déclarer une fonction en PHP ça ressemble beaucoup à ce que vous connaissez déjà :

function add($nb1, $nb2)
{
    return $nb1 + $nb2;
}

Ça techniquement ça ne plantera pas en PHP mais…

La grande différence avec JS : le type hinting

PHP est un langage typé, vous allez donc devoir préciser le type des paramètres et du retour de votre fonction :

function add(int $nb1, int $nb2) : int
{
    return $nb1 + $nb2;
}

Fonction qui ne retourne rien

Quand une fonction ne retourne rien, elle a le type de retour void :

function printSum(int $nb1, int $nb2) : void
{
    echo $nb1 + $nb2;
}

Paramètres par défaut

En PHP, on peut également avoir des paramètres par défaut :

function computeVat(int $price, float $vat = 1.2) : float
{
    return $price * $vat;
}

Le type nullable

Votre fonction peut parfois renvoyer soit quelque chose, soit null vous devez aussi le préciser :

function divide(float $nb1, float $nb2) : ? float
{
    if($nb2 === 0)
    {
        return null;
    }
    else
    {
        return $nb1 / $nb2;
    }
}

Utiliser une fonction

Pour utiliser une fonction ça ne change pas :

function add(int $nb1, int $nb2) : int
{
    return $nb1 + $nb2;
}

add(5, 2);

PHP et HTML

Le PHP sert également à dynamiser le code HTML, c’est-à-dire que vous allez générer un HTML différent avec des structures de contrôle (boucles, conditions) et dynamique en fonction des informations contenues dans vos variables.

<?php
    $name = "Hugues";
?>

<header>
    <h1>Bonjour <?= $name ?></h1>
</header>

Ici, on injecte la variable dans le HTML et le <h1> affichera “Bonjour Hugues”.

💡 <?= $name ?> est l’équivalent d’écrire <?php echo $name; ?>

Créer des conditions dans le HTML

<?php
    $grade = 11;
?>

<?php if($grade > 12) { ?>
    <p class="green"><?= $grade ?></p>
<?php } else if($grade > 9) { ?>
    <p class="orange"><?= $grade ?></p>
<?php } else { ?>
    <p class="red"><?= $grade ?></p>
<?php } ?>

Créer des boucles dans le HTML

<?php 
    $ingredients = ["Salade", "Tomate", "Oignon"];
?>

<ul>
    <?php foreach($ingredients as $ingredient) { ?>
        <li><?= $ingredient ?></li>
    <?php } ?>
</ul>

Exercices d’affichage

Lien des consignes des exercices d’affichage

Mini-projet Bulletin de notes

Consignes du mini-projet