0% ont trouvé ce document utile (0 vote)
102 vues5 pages

Partie 1: PHP: Exercice: Variables Et Types de Données

Le document présente une série d'exercices pratiques en PHP, couvrant des concepts tels que les variables, les tableaux, les formulaires, la gestion de fichiers, et la programmation orientée objet. Il inclut également des étapes pour mettre en place une architecture MVC de base, avec des tâches allant de la création de la structure de dossiers à la gestion des erreurs et exceptions. Enfin, il propose des exercices pour appliquer ces concepts dans des projets concrets comme un mini-blog, tant en développement from scratch qu'avec le framework Laravel.

Transféré par

salma.toumi
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
102 vues5 pages

Partie 1: PHP: Exercice: Variables Et Types de Données

Le document présente une série d'exercices pratiques en PHP, couvrant des concepts tels que les variables, les tableaux, les formulaires, la gestion de fichiers, et la programmation orientée objet. Il inclut également des étapes pour mettre en place une architecture MVC de base, avec des tâches allant de la création de la structure de dossiers à la gestion des erreurs et exceptions. Enfin, il propose des exercices pour appliquer ces concepts dans des projets concrets comme un mini-blog, tant en développement from scratch qu'avec le framework Laravel.

Transféré par

salma.toumi
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Partie 1 : PHP

------------------------------------------------------------------------------------------------------------------------
Exercice : Variables et types de données
1. Créez un fichier exercice2.php.
2. Déclarez plusieurs variables de différents types (chaîne de caractères, entier, nombre à
virgule, booléen).
3. Affichez la valeur de chaque variable et son type.
4. Essayez de convertir (caster) l’une des variables d’un type à un autre puis affichez à
nouveau sa valeur et son type.

Exercice : Tableaux (array)


1. Dans Table.php, créez un tableau (array) qui contient au moins 5 prénoms.
2. Affichez tous les prénoms à l’aide d’une boucle <code>foreach</code>.
3. Affichez la taille du tableau (nombre d’éléments).
4. Supprimez le dernier prénom et réaffichez le tableau pour vérifier la suppression.

Exercice :
Soit le tableau ci-dessous :
$villeB = Array (
Array("Saint Brieuc","Dinan","Lannion") ;
Array("Quimper","Brest","Morlaix") ;
Array("Rennes","SaintMalo","Redon") ;
Array("Lorient","Vannes","Pontivy") ;
);
1- Qu'est-ce qu'affiche ?
• echo $villeB[1][2] ;
• echo $villeB[3][1] ;
• echo $villeB[4][2] ;

2- Si on rajoute Guingamp aux villes de la première liste, écrire la ligne permettant de l'afficher
avec echo

Exercice :
Soit le tableau suivant :
$tabVille[0]="Lannion" ;
$tabVille[1]="Guingamp" ;
$tabVille[3]="Morlaix" ;
$tabVille[4]="Brest" ;

Soit le programme suivant :


for($i=0;$i<count($tabVille);$i++){

1/5
echo $tabVille[$i] ;
}

D'après vous quels sont les problèmes rencontrés ?

Exercice :
1- Compléter le code ci-dessous en utilisant for et isset pour afficher le tableau complet même si les
cellules ne sont pas contiguës :
<?php
require 'header.php';
$tabVille[0] = "Lannion";
$tabVille[1] = "Guingamp";
$tabVille[3] = "Morlaix";
$tabVille[4] = "Brest";
$tabVille[10]= "Rennes";
…..
?>

2- Écrire le programme de l'exercice précédent avec foreach().

Exercice :
Soit le formulaire ci-dessous :
<form method="post" action="index.php">
Nom :<input type="text" name="nom"><br>
Prénom :<input type="text" name="prenom"><br>
signature:<textarea name="signature"></textarea><br>
Langue:<input type="radio" name="lg" value="fr">fr
<input type="radio" name="lg" value="en">en<br>
<input type="submit" value="Envoyer">
</form>

Écrire la boucle d'index.php qui affichera la saisie complète en indiquant les champs et leur valeurs.

Exercice : Formulaire (méthode GET ou POST)


1. Dans ex_form.php, créez un formulaire HTML simple avec un champ de texte pour saisir un
prénom et un bouton « Envoyer ».
2. Dans ex_traitement.php, récupérez le prénom saisi via $_GET ou $_POST (selon la
méthode choisie).
3. Affichez un message personnalisés du style « Bonjour, [prénom] ! ».
4. Testez le formulaire en saisissant plusieurs prénoms différents.

Exercice : Fichiers (écriture/lecture)


1. Dans ex_file.php, écrivez un script qui ouvre un fichier texte (ex. donnees.txt).
2. Écrivez plusieurs lignes de texte dedans.
3. Fermez le fichier.
4. Ré-ouvrez le même fichier en mode lecture, lisez tout le contenu et affichez-le à l’écran.
5. Gérez un éventuel message d’erreur si le fichier n’existe pas ou ne peut pas être lu.

Exercice : Getters, Setters & Encapsulation


1. Reprenez la classe Personne étudiée dans le cours.

2/5
2. Ajoutez une méthode publique setNom($nouveauNom) qui permet de changer la valeur de
$nom tout en empêchant les noms vides ou trop courts (par exemple, moins de 2 caractères).
3. Testez la modification du nom :
◦ Essayez un nom normal (ex. « Ahmed »).
◦ Essayez un nom vide ou trop court. Dans ce cas, ne modifiez pas la propriété et affichez
un message d’erreur.

Exercice : Classes abstraites


1. Créez une classe abstraite Forme :
◦ Propriété protégée $couleur.
◦ Constructeur qui assigne la couleur.
◦ Méthode abstraite aire() (pas de corps).
◦ Méthode concrète getCouleur() qui retourne la couleur.
2. Créez deux classes concrètes Cercle et Rectangle qui héritent de Forme :
◦ Cercle : propriété $rayon, implémente aire() = π × rayon².
◦ Rectangle : propriétés $longueur, $largeur, implémente aire() = longueur × largeur.
3. Dans un script, instanciez un Cercle et un Rectangle, affichez leur couleur et leur aire.
Note : Vous ne pouvez pas faire new Forme(...) car Forme est abstraite.

Exercice : Méthodes magiques (Exemple avec __toString())


1. Créez une classe Livre avec :
◦ Propriétés privées : $titre, $auteur.
◦ Constructeur pour initialiser ces propriétés.
2. Implémentez la méthode magique __toString() pour retourner une chaîne du style : « Titre :
[titre], Auteur : [auteur] ».
3. Instanciez un Livre, par exemple new Livre("1984", "George Orwell").
4. Faites un echo de l’objet et observez le résultat.

Partie 2 : Framework MVC


------------------------------------------------------------------------------------------------------------------------

Étape 1 : Mettre en place la structure de dossiers

But : Créer un squelette de projet avec une structure MVC minimale.


Tâches :
• Créez un dossier principal (ex. MonProjetMVC).
• À l’intérieur, créez 3 sous-dossiers :
models/ (pour les classes du modèle),
views/ (pour les fichiers d’affichage),
controllers/ (pour les contrôleurs).
• Créez un fichier index.php à la racine, qui servira de point d’entrée (front controller).
• Créez un fichier .htaccess (si vous êtes sur Apache) pour réécrire les URL et tout rediriger
vers index.php.

Étape 2 : Système de routage basique


But : Diriger une requête vers le bon contrôleur et la bonne action (méthode).
Tâches :
• Dans index.php, récupérez la route depuis l’URL, par exemple via $_GET['url'] ou un
paramètre controller/action.

3/5
• En fonction de cette route, appelez un contrôleur (fichier dans controllers/) et une méthode
correspondante.
Exemples de routes :
index.php?controller=home&action=index
index.php?controller=user&action=list
• Créez un contrôleur simple, HomeController.php, avec une méthode index() qui affiche (par
un simple echo) “Bienvenue !”.

Étape 3 : Premier modèle et interaction avec la base de données

But : Introduire un Model qui interagit avec une base de données.


Tâches :
• Configurez une connexion à la base de données (via PDO, par exemple).
• Créez un fichier models/Database.php qui gère la création d’une instance PDO (Singleton
ou simple fonction).
• Créez un modèle models/User.php (une classe User ou UserModel) avec une méthode
getAllUsers() qui retourne la liste des utilisateurs depuis la table users.
• Dans votre UserController.php, créez une méthode list() qui : Instancie (ou récupère) le
modèle User.
• Appelle la méthode getAllUsers().
• Affiche le résultat (pour l’instant, par un var_dump, ou en le passant à la vue).

Étape 4 : Vue (HTML) et passage de données

But : Séparer clairement l’affichage (HTML) de la logique (contrôleur).


Tâches :
• Créez un fichier de vue views/user/list.php.
• Dans votre UserController::list(), après avoir récupéré la liste des utilisateurs, incluez cette
vue et passez-lui les données (par exemple via une variable $users).
• Dans la vue, affichez un tableau HTML listant les utilisateurs.

Etape 5 : Créer (Create) un utilisateur (Formulaire + Contrôleur)

But : Implémenter la partie C du CRUD (Create).


Tâches :
• Ajoutez dans UserController une méthode create().
• Si la requête n’est pas encore soumise (GET), affichez un formulaire (vue
views/user/create.php).
• Si la requête est soumise (POST), récupérez les champs (ex. nom, email), appelez la
méthode createUser() de votre UserModel.
• Après l’insertion en BDD, redirigez l’utilisateur vers la liste des utilisateurs ou affichez un
message de succès.

Étape 6 : Modifier (Update) et supprimer (Delete) un utilisateur


But : Compléter le CRUD (Update & Delete).
Tâches :
• Update :
◦ Dans UserController, méthode edit($id).
◦ Récupérez l’utilisateur concerné (via une méthode getUserById($id) dans le modèle).
◦ Affichez un formulaire pré-rempli.

4/5
◦ Si le formulaire est soumis, appelez une méthode updateUser($id, $nom, $email).
• Delete :
◦ Dans UserController, méthode delete($id).
◦ Appelez deleteUser($id) dans le modèle.
◦ Redirigez ou affichez un message de confirmation.

Étape 7 : Organisation avancée des vues (layouts, … )

But : Réutiliser des morceaux de vue (en-tête, pied de page…) et mettre en place un layout global.
Tâches :
• Créez un layout global views/layout.php qui contient la structure HTML générale (header,
footer, menu).
• À l’intérieur de ce layout, définissez un emplacement où inclure la vue spécifique (par
exemple <?php include $content; ?>).
• Dans votre contrôleur, vous pourrez faire :
$content = 'views/user/list.php';
include 'views/layout.php';
• Mettez en place un menu de navigation pour accéder aux différentes actions (Lister
utilisateurs, Créer, etc.).

Étape 8 : Gestion des erreurs et exceptions

But : Prévoir un affichage utilisateur pour les erreurs (ex. mauvaise route, contrôleur inconnu,
exception SQL…).
Tâches :
• Gérer le cas où le contrôleur ou l’action n’existe pas (404 not found ou message d’erreur).
• Entourez les opérations critiques (ex. requêtes SQL) d’un try/catch.
• Affichez un message plus joli qu’un simple var_dump d’erreur (créez une vue
views/error.php).
• Personnalisez l’affichage des erreurs en mode production vs. Développement.

Exercice 1 : Application de l’architecture MVC pour « Mini-blog » (From scratch)

But : Mettre en pratique tout le cycle MVC dans une application plus concrète.
Tâches :
• Base de données : table articles (id, titre, contenu, date de création, etc.).
• Modèle ArticleModel avec méthodes : getAll(), getById($id), create(), update(), delete().
• Contrôleur ArticleController avec actions : index(), show($id), create(), edit($id),
delete($id).
• Vues correspondantes (liste des articles, affichage d’un article, formulaire de
création/édition).
• Mettez en place un layout global, un menu « Accueil / Nouvel article ».
• Ajoutez une gestion des erreurs (article introuvable, etc.).

Exercice 2: Application de l’architecture MVC pour « Mini-blog » avec Laravel


1. Utiliser framework Laravel, pour la création de l’application « Mini-blog » en respectant
l’architecture MVC (Exercice précédent).
2. Quelles sont vos remarques concernant la différence entre la création d'une application en
utilisant un framework MVC (from scratch) et un framework comme Laravel ?

5/5

Vous aimerez peut-être aussi