Cours RechercherCtrl K

Fiches de révision

Fiches PHP

9 fiches, une par leçon, dans l'ordre du cours. Retour au cours PHP

PHP · Leçon 1

Premiers pas en PHP

À retenir

  • PHP s'exécute sur le serveur ; le navigateur ne reçoit que le résultat (du HTML), jamais le code PHP.
  • Le code PHP s'écrit entre <?php et ?> ; tout ce qui est en dehors est envoyé tel quel.
  • echo affiche du texte ; ce texte peut contenir des balises HTML.
  • Chaque instruction se termine par un point-virgule ;.
  • Commentaires : // une ligne ou /* plusieurs lignes */.

Mémo

<h1>Mon site</h1>
<?php
// PHP écrit du HTML
echo "<p>Bonjour !</p>";
?>
<p>Du HTML normal.</p>

Pièges à éviter

  • Oublier le ; : l'erreur est souvent signalée sur la ligne suivante.
  • Oublier de fermer un texte avec son guillemet.
  • Ouvrir un fichier .php directement dans le navigateur (double-clic) : il faut passer par un serveur (php -S localhost:8000).

Revoir la leçon et ses exercices

PHP · Leçon 2

Les variables

À retenir

  • Une variable commence par $ et reçoit une valeur avec = : $age = 18;.
  • Types : texte ("Léa"), entier (18), nombre à virgule (2.50, avec un point), booléen (true / false).
  • Calculs : + - * / et % (le reste de la division).
  • Le point . colle des textes ; entre guillemets doubles, les variables sont remplacées par leur valeur.
  • Entre guillemets simples, rien n'est remplacé : '$age' reste « $age ».

Mémo

<?php
$prenom = "Léa";
$age = 18;
$age = $age + 1;           // 19
$reste = 17 % 5;           // 2

echo "Je m'appelle " . $prenom . ".";
echo "J'ai $age ans.";

Pièges à éviter

  • Écrire une virgule dans un nombre (2,50) au lieu d'un point.
  • Utiliser + pour coller des textes : en PHP, c'est le point.
  • Mettre des guillemets simples et s'étonner que $prenom s'affiche tel quel.
  • $Prenom et $prenom sont deux variables différentes.

Revoir la leçon et ses exercices

PHP · Leçon 3

Les conditions

À retenir

  • if (condition) { … } elseif (autre) { … } else { … } : PHP teste dans l'ordre et s'arrête à la première condition vraie.
  • Comparaisons : === (égal, même type), !== (différent), < > <= >=.
  • = range une valeur, === compare.
  • && = ET (les deux vraies), || = OU (au moins une vraie), ! = NON.
  • Pour des paliers (notes, tarifs), on commence par le plus haut.

Mémo

<?php
if ($note >= 16) {
    echo "Très bien";
} elseif ($note >= 10) {
    echo "Validé";
} else {
    echo "Raté";
}

if ($age >= 65 || $etudiant) { … }
if ($age >= 16 && $age < 18) { … }

Pièges à éviter

  • Écrire if ($age = 18) : ça range 18 dans $age au lieu de comparer.
  • Mettre les paliers dans le mauvais ordre (≥ 10 avant ≥ 16) : la première condition vraie gagne.
  • Oublier les accolades ou les parenthèses.

Revoir la leçon et ses exercices

PHP · Leçon 4

Tableaux et boucles

À retenir

  • Un tableau range plusieurs valeurs : $t = ["a", "b", "c"];. Les numéros commencent à 0 : $t[0] vaut "a".
  • count($t) donne le nombre d'éléments ; $t[] = "d"; ajoute à la fin.
  • Tableau associatif : des clés au lieu des numéros, ["prenom" => "Léa"], lu avec $eleve["prenom"].
  • foreach ($t as $valeur) parcourt chaque élément ; foreach ($t as $cle => $valeur) donne aussi la clé.
  • for ($i = 1; $i <= 5; $i++) répète un nombre de fois : départ, condition pour continuer, pas.

Mémo

<?php
$fruits = ["Pomme", "Kiwi"];
$fruits[] = "Banane";
echo count($fruits);       // 3

foreach ($fruits as $fruit) {
    echo "<li>$fruit</li>";
}

$eleve = ["prenom" => "Léa", "age" => 18];
foreach ($eleve as $cle => $valeur) {
    echo "$cle : $valeur";
}

for ($i = 1; $i <= 10; $i++) { … }

Pièges à éviter

  • Croire que le premier élément est $t[1] : c'est $t[0].
  • Mettre le echo "<ul>" dans la boucle : il serait répété à chaque tour.
  • Une condition de for qui reste toujours vraie : boucle infinie.

Revoir la leçon et ses exercices

PHP · Leçon 5

Formulaires et sécurité

À retenir

  • Un formulaire : <form method="post">, et chaque champ a un name, qui devient sa clé dans $_POST.
  • $_POST["nom"] ?? "" lit un champ avec une valeur par défaut s'il n'a pas été envoyé.
  • Tout arrive en texte : (int) ou (float) pour convertir, trim() pour enlever les espaces.
  • $_SERVER["REQUEST_METHOD"] === "POST" : le formulaire vient d'être envoyé.
  • Toujours afficher une donnée du visiteur avec htmlspecialchars() (faille XSS), et toujours vérifier côté serveur.

Mémo

<?php
if ($_SERVER["REQUEST_METHOD"] === "POST") {
    $prenom = trim($_POST["prenom"] ?? "");
    $age = (int) ($_POST["age"] ?? 0);
    if ($prenom === "") {
        echo "Prénom obligatoire.";
    } else {
        echo "Bonjour " . htmlspecialchars($prenom);
    }
}
?>
<form method="post">
  <label for="prenom">Prénom</label>
  <input id="prenom" name="prenom">
  <button type="submit">Envoyer</button>
</form>

Pièges à éviter

  • Oublier l'attribut name : le champ n'est pas envoyé.
  • Afficher $_POST["…"] sans htmlspecialchars().
  • Faire confiance à required : il se contourne en deux secondes, il faut vérifier en PHP.
  • Comparer un texte reçu à un nombre sans le convertir.

Revoir la leçon et ses exercices

PHP · Leçon 6

Les fonctions

À retenir

  • Une fonction reçoit des valeurs (arguments) entre parenthèses, fait un travail et renvoie un résultat.
  • Déclarer : function nom($parametre) { return …; } ; appeler : nom(valeur).
  • return renvoie le résultat et termine la fonction ; pour l'afficher, on écrit echo nom(…).
  • Un paramètre peut avoir une valeur par défaut : function prixTTC($prix, $taux = 20).
  • Les variables d'une fonction n'existent que dedans ; elle ne voit pas les autres : tout passe par les paramètres.

Mémo

<?php
function prixTTC(float $prixHT, float $taux = 20): float
{
    return $prixHT * (1 + $taux / 100);
}

echo prixTTC(100);       // 120
echo prixTTC(100, 5.5);  // 105.5

// fonctions de PHP
strlen("PHP");        // 3
strtoupper("sio");    // SIO
round(3.14159, 2);    // 3.14

Pièges à éviter

  • Faire echo dans la fonction au lieu de return : le résultat ne peut plus être réutilisé.
  • Écrire du code après return : il ne s'exécute jamais.
  • Utiliser dans une fonction une variable créée en dehors : elle n'y existe pas.

Revoir la leçon et ses exercices

PHP · Leçon 7

Les classes et les objets

À retenir

  • Une classe est un plan ; un objet est construit à partir de ce plan avec new.
  • Les propriétés sont les variables de l'objet, les méthodes ses actions. On y accède avec la flèche : $objet->propriete, $objet->methode().
  • Dans une méthode, $this désigne l'objet sur lequel on l'a appelée.
  • Le constructeur __construct() est appelé par new ; le raccourci public string $nom dans ses paramètres crée et remplit la propriété.
  • private : utilisable seulement dans la classe ; on passe alors par des méthodes publiques (accesseurs getSolde()), qui peuvent vérifier les valeurs.

Mémo

<?php
class Compte
{
    private float $solde = 0;

    public function __construct(public string $titulaire)
    {
    }

    public function deposer(float $montant): void
    {
        if ($montant > 0) {
            $this->solde += $montant;
        }
    }

    public function getSolde(): float
    {
        return $this->solde;
    }
}

$compte = new Compte("Léa");
$compte->deposer(50);
echo $compte->getSolde();   // 50

Pièges à éviter

  • Écrire $this->$solde : pas de $ après la flèche.
  • Oublier $this-> dans une méthode : $solde tout seul est une variable locale, vide.
  • Écrire __construct avec un seul tiret bas : ce n'est alors pas un constructeur.
  • Lire une propriété private depuis l'extérieur : « Cannot access private property ».

Revoir la leçon et ses exercices

PHP · Leçon 8

Héritage et fichiers séparés

À retenir

  • Une classe par fichier, au même nom (Compte.php), inclus avec require_once 'Compte.php';.
  • require arrête tout si le fichier manque, include continue ; _once évite d'inclure deux fois.
  • class Livret extends Compte : la classe enfant hérite de tout et peut ajouter ou redéfinir des méthodes.
  • parent::__construct(…) et parent::methode() appellent la version de la classe parente.
  • protected = visible dans la classe et ses enfants ; private = seulement dans la classe.
  • throw new InvalidArgumentException("…") lance une exception ; try { … } catch (InvalidArgumentException $e) { $e->getMessage(); } l'attrape.

Mémo

<?php
require_once 'Compte.php';

class Livret extends Compte
{
    public function __construct(string $titulaire, private float $taux)
    {
        parent::__construct($titulaire);
    }

    public function decrire(): string
    {
        return parent::decrire() . " ($this->taux %)";
    }
}

try {
    $livret->deposer(-5);
} catch (InvalidArgumentException $e) {
    echo $e->getMessage();
}

Pièges à éviter

  • Inclure la classe enfant avant la classe parente.
  • Mettre private une propriété dont la classe enfant a besoin : il faut protected.
  • Oublier parent::__construct() : les propriétés du parent ne sont pas remplies.
  • Utiliser require au lieu de require_once et déclarer deux fois la même classe.

Revoir la leçon et ses exercices

PHP · Défi final

Le bulletin de notes

À retenir

  • Les données viennent d'un tableau, une boucle les parcourt, une classe les range et les calcule, et l'affichage passe par htmlspecialchars().
  • Une classe par fichier, incluse avec require_once.
  • Des méthodes courtes, chacune avec une seule tâche : ajouterNote(), moyenne(), mention().

Mémo

<?php
require_once 'Eleve.php';

foreach ($resultats as $prenom => $notes) {
    $eleve = new Eleve($prenom);
    foreach ($notes as $note) {
        $eleve->ajouterNote($note);
    }
    echo htmlspecialchars($eleve->prenom) . " : " . $eleve->moyenne();
}

Pièges à éviter

  • Diviser par count() d'un tableau vide : division par zéro.

Revoir la leçon et ses exercices