Professional Documents
Culture Documents
php5 MVC Pdo Mysqli 160916202441 PDF
php5 MVC Pdo Mysqli 160916202441 PDF
com
Ingénieur études et développement tn.linkedin.com/in/monoemyouneb
Plan
Partie 1 – Notion de base de la POO
I. Introduction à la POO
II. Les classes en php
III. Les constantes de classe en php
IV. L'héritage
V. Les interfaces
VI. Les exceptions
Neto graphie
2
Monoem YOUNEB
Partie 1 – Notion de base de la POO
I. Introduction à la POO
1. La POO
La programmation orienté objet (POO) est une façon de programmation qui
consiste à définir et assembler des briques de code appelés « Objet »
3
Monoem YOUNEB
Partie 1 – Notion de base de la POO
3. Une classe
Tous les objets possédant les mêmes caractéristiques et avec lesquels on peut
faire les même choses forment un groupe qu'on appelle en informatique une
Classe.
Exemple
Les Etudiants chacun a un cin, nom, prénom, adresse,tel etc.
Donc ils ont en commun de posséder certaines caractéristiques et de pouvoir
effectuer certaines actions Ils font donc partie d'une classe unique qu’on
peut l'appeler « Etudiant »
Syntaxe
<?php
class MaClasse{
$maVariable;
function maMethode(){
//code
}
}
?> 4
Monoem YOUNEB
Partie 1 – Notion de base de la POO
4. Une Instance
C’est le fait de créer un objet a partir d’une classe.
a. Syntaxe PHP
<?php
?>
5
Monoem YOUNEB
Partie 1 – Notion de base de la POO
4. Encapsulation en PHP
La déclaration d'attributs dans une classe :
private $nom
- le nom de l'attribut à créer, précédé de sa visibilité.
- Les propriétés au sein d'une classe sont généralement déclarées private. Elles sont accessibles de
l'extérieur de la classe via les accesseurs
private $nom
6
Monoem YOUNEB
Partie 1 – Notion de base de la POO
La visibilé public
On a un accès depuis n'importe où, depuis l'intérieur de l'objet (dans les méthodes
qu'on a créées), comme depuis l'extérieur.
La visibilé private
L’accès aux attributs et méthodes seulement depuis l'intérieur de la classe.
La visibilé protégée
L’accès aux données est réservé aux fonctions des classes héritières
7
Monoem YOUNEB
Partie 1 – Notion de base de la POO
<?php
class Etudiant
{
private $identifiant;
private $cin;
private $nom;
private $prenom;
private $adresse;
private $dateNaissance;
private $tel;
}
?>
8
Monoem YOUNEB
Partie 1 – Notion de base de la POO
8. Les méthodes en PHP
<?php
$this->nomMethode();
?>
<?php
class Etudiant
{
private $identifiant;
private $cin;
private $nom;
private $prenom;
private $adresse;
private $dateNaissance;
private $tel;
1. Les propriétés
L'accès à une propriété à l'intérieur d'une classe se fait de la manière suivante:
$this->nomPropriété
$this est une référence à l'objet appelant auquel appartient la méthode.
2. Les constantes
Les constantes sont déclarées de la manière suivante:
const NOMCONSTANTE;
L'accès aux constantes se fait de la manière suivante:
nomClass:: NOMCONSTANTE
3. Instance
<?php
$et = new Etudiant;
$et est un objet de type Etudiant, On dit que l'on instancie la classe Etudiant.
Le constructeur New s'appelle unconstructeur 10
Monoem YOUNEB
Partie 1 – Notion de base de la POO
II. Utilisation des classes en PHP
2. Appels des méthodes en PHP
<?php
class Etudiant
{
private $identifiant;
private $cin;
private $nom;
private $prenom;
private $adresse;
private $dateNaissance;
private $tel;
<?php
class Etudiant
{
private $identifiant;
private $cin;
private $nom;
private $prenom;
private $adresse;
private $dateNaissance;
private $tel;
Le destructeur est appelée aussitôt que toutes les références à un objet particulier sont effacées ou
lorsque l'objet est explicitement détruit.
- Un destructeur doit avoir comme nom « __destruct ».
<?php
function getNomPropriete();
?>
Les mutateurs permettent la modification des propriétés déclarées private. Ces méthodes sont
généralement nommées de la manière suivante:
<?php
function setNomPropriete($valeur);
?>
14
Monoem YOUNEB
Partie 1 – Notion de base de la POO
II. Utilisation des classes en PHP
6. Exemple Les accesseurs et mutateurs en PHP
<?php
class Etudiant
{
private $identifiant;
private $cin;
private $nom;
private $prenom;
private $adresse;
private $dateNaissance;
private $tel;
<?php
// inlusion simple
require ‘Etudiant.php'; // J'inclus la classe.
$Etud= new Etudiant; // Puis, seulement après, je me sers de ma classe.
?>
<?php
// inclusion avec fonction
function chargerClasse($classe)
{
require $classe . '.php'; // On inclut la classe correspondante au paramètre passé.
}
?>
16
Monoem YOUNEB
Partie 1 – Notion de base de la POO
III. Les constantes de classe en php
1. Les constantes de classe en PHP
Une constante est une sorte d'attribut dont la valeur ne change jamais.
<?php
class Etudiant
{
private $identifiant;
private $cin;
private $nom;
private $prenom;
private $adresse;
private $dateNaissance;
private $tel;
// déclaration des constantes
const Taille = 180;
}
?>
<?php
public static function parler()
{
echo 'Je suis une méthode statique!';
}
?>
<?php
Etudiant ::parler();
?>
18
Monoem YOUNEB
Partie 1 – Notion de base de la POO
III. Les constantes de classe en php
3. Les attributs statiquesen PHP
• Déclaration
Ce sont des méthodes qui sont faites pour agir sur une classe et non sur un objet.
<?php
// Variable statique PRIVÉE.
private static $Moyenne= 12;
// Affichage
echo Compteur :: getMoyenne();
public static function getCompteur() // Méthode statique qui renverra la valeur du compteur.
{
return self :: $Moyenne;
}
?>
self représente la classe tandis que $this représente l'objet actuellement créé.
19
Monoem YOUNEB
Partie 1 – Notion de base de la POO
III. Les constantes de classe en php
En résumé
L'opérateur « -> » permet d'accéder à un élément de tel objet, tandis que l'opérateur « :: » permet
d'accéder à un élément de telle classe.
Au sein d'une méthode statique, on accède à l'objet grâce à la pseudo-variable $this, tandis
qu'on accède à la classe grâce au mot-clé self.
Les attributs et méthodes statiques ainsi que les constantes de classe sont des éléments propres
à la classe, c'est-à-dire qu'il n'est pas utile de créer un objet pour s'en servir.
Les attributs et méthodes statiques sont utiles lorsque l'on ne veut pas avoir besoin d'un objet
pour s'en servir.
20
Monoem YOUNEB
Partie 1 – Notion de base de la POO
IV. L’héritage en php
- L'héritage est un principe de la programmation orientée objet.
- Une classe B hérite d'une classe A. La classe A est donc considérée comme la classe mère et la
classe B est considérée comme la classe fille.
- Lorsqu'on dit que la classe B hérite de la classe A, c'est que la classe B hérite de tous les
attributs et méthodes de la classe A. Si l'on déclare des méthodes dans la classe A, et qu'on crée une
instance de la classe B, alors on pourra appeler n'importe quelle méthode déclarée dans la classe
A du moment qu'elle est publique.
NB: En PHP, l’héritage multiple n’est pas supporté. C’est-à-dire qu’une classe ne peut pas
être l’enfant directe de plusieurs classes.
Exemple d’utilisation de l’héritage : <?php
class ClasseA {
public function fctHerite(){
echo "heritage";
}
...
}
<?php
class maClass{
final public function maFonction(){
...
}
}
?>
2. Classe Final
On peut utiliser ce mot clé afin qu’une classe ne puisse pas être héritée par une autre classe.
<?php
}
?>
22
Monoem YOUNEB
Partie 1 – Notion de base de la POO
IV. L’héritage en php
3. L’auto-chargement de classe
L’auto-chargement de classe consiste à définir une méthode « __autoload » qui sera appelée lorsqu'on utilise une
classe ou une interface qui n’a pas encore été définie.
<?php
Function __autoload($class_name) {
include $class_name.'.php';
}
$a = new ClasseA();
$b = new ClasseB();
?>
23
Monoem YOUNEB
Partie 1 – Notion de base de la POO
IV. L’héritage en php
<?php
?>
24
Monoem YOUNEB
Partie 1 – Notion de base de la POO
IV. L’héritage en php
<?php
25
Monoem YOUNEB
Partie 1 – Notion de base de la POO
IV. L’héritage en php
4. Déclaration et redéfinition des méthodes abstraites
- Une méthode abstraite est une méthode partiellement définie dans la classe. En effet, lorsque l'on déclare une
méthode abstraite, on ne définit que son prototype (sa signature). Les classes dérivées devront obligatoirement
redéfinir entièrement (prototype + corps) toutes les méthodes abstraites de la classe parente.
- La déclaration d'une classe abstraite se réalise au moyen du mot-clé « abstract ». Prenons l'exemple d'une classe
abstraite « Personne » qui sera, par exemple, dérivée par deux classes concrètes «Etudiant » et « Eleve ».
• Déclaration de méthodes abstraites
<?php
abstract class Personne
{
protected $sexe; Notre classe dispose à présent de deux nouvelles méthodes abstraites Lire() et Courir().
protected $nom; Le corps de ces deux méthodes n'est pas défini.
abstract function Lire(); Nous devrons les définir dans les classes dérivées.
abstract function courir();
public function setNom($nom) Rq : toute classe qui définit une ou plusieurs méthodes abstraites doit obligatoirement
{ être déclarées abstraite elle aussi.
$this->nom = $nom;
}
public function getNom()
{
return $this->nom;
}
public function getSexe()
{
return $this->sexe;
}
} 26
?>
Monoem YOUNEB
Partie 1 – Notion de base de la POO
IV. L’héritage en php
• Déclaration des classes dérivées
• Redéfinition des méthodes abstraites dans les classes dérivées
<?php
<?php
class Eleve extends Personne
class Etudiant extends Personne
{
{
public function __construct($nom)
public function __construct($nom)
{
{
$this->nom = $nom;
$this->nom = $nom;
$this->sexe = ‘F';
$this->sexe = 'M';
}
}
public function Lire()
public function Lire()
{
{
echo $this->nom .' Lire une Hostoire';
echo $this->nom .' Lire un Roman';
}
}
public function Courir()
public function Courir()
{
{
echo ‘Faire du sport scolaire';
echo ‘Faire du sport';
}
}
}
}
?>
?>
27
Monoem YOUNEB
Partie 1 – Notion de base de la POO
IV. L’héritage en php
5. Instances des classes Etudiant et Eleve
?>
28
Monoem YOUNEB
Partie 1 – Notion de base de la POO
V. Les interfaces
1. Définition
C’est un moyen d'imposer une structure à une classes: obliger une classes à implémenter certaines méthodes
sans avoir à définir comment ces méthodes fonctionneront.
2. Création d’une interface
<?php
interface Courir
{
public function vitesse($v);
?>
Régles
1. Toutes les méthodes présentes dans une interface doivent être publiques.
2. Une interface ne peut pas contenir de méthodes abstraites ou finales.
3. Une interface ne peut pas avoir le même nom qu'une classe.
3. Implémenter une interface
<?php
class Etudiant implements Courir
{
public function vitesse($v)
{
}
}
?> 29
Monoem YOUNEB
Partie 1 – Notion de base de la POO
V. Les interfaces
3. Implémenter une interface
Régles
1. Lors de l’héritage d’une classe et l’implémentation d’une interface, alors il faut d'abord spécifier la classe à hériter
avec le mot-clé extends puis les interfaces à implémenter avec le mot-clé implements.
2. Il est obligatoire d’écrire toutes ses méthodes, comme il est possible de rajouter autant de plus.
4. Hériter des interfaces
Comme pour les classes, on peut hériter des interfaces grâce à l'opérateur extends. On ne peut réécrire ni une
méthode ni une constante qui a déjà été listée dans l'interface parente. Exemple :
Contrairement aux classes, les interfaces peuvent hériter de plusieurs interfaces à la fois. Il suffit de séparer leur nom par une
virgule. : <?php
interface i1{
public function test1();
}
interface iB extends i1{
public function test1 ($param1, $param2); // Erreur fatale : impossible de réécrire cette méthode.
}
interface i2 extends i1{
public function test2();
}
class MaClasse implements i2{
// Pour ne générer aucune erreur, on doit écrire les méthodes de i2 et aussi de i1.
public function test1() {
}
public function test2() {
}
?> 30
Monoem YOUNEB
Partie 1 – Notion de base de la POO
V. Les interfaces
4. Hériter des interfaces
Contrairement aux classes, les interfaces peuvent hériter de plusieurs interfaces à la fois. Il suffit de séparer leur nom
par une virgule. Exemple :
<?php
interface i1
{
public function test1();
}
interface i2
{
public function test2();
}
31
Monoem YOUNEB
Partie 1 – Notion de base de la POO
VI. Les interfaces
1. Définition
Ce sont des erreurs lancées par PHP lorsque qu’une instruction qui ne va pas et qui génère de chose survenu.
2. Provocation des exeptions
- Une exception peut être lancée depuis n'importe où dans le code.
- Il faut lancer une instance de la classe Exception qui contient un message d'erreur ainsi que son code.
Activité
- Créer une fonction qui calcule <?php
function Somme($x, $y)
la somme de deux nombres.
{
- Si l'un des deux nombres if (!is_numeric($x) || !is_numeric($y))
{
n'est pas numérique, alors on // On lance une nouvelle exception grâce à throw et on instancie directement un objet de la
classe Exception.
lancera une exception de type
throw new Exception('Les deux paramètres doivent être des numérique');
Exception à l'aide du mot }
return $x + $y;
throw et un message d'erreur }
comme paramètre du try // Nous allons essayer d'effectuer les instructions situées dans ce bloc.
{
constructeur de la classe Echo Somme(8, 2), '<br />';
Echo Somme(‘Auteur', 54), '<br />';
Exception. }
catch (Exception $e) // On va attraper les exceptions "Exception" s'il y en a une qui est levée
{
echo 'Une exception a été lancée. Message d\'erreur : ', $e->getMessage();
}
?>sont des
32
Monoem YOUNEB
Partie 2 - Techniques avancées
1. Définition
Dans la plupart des développements professionnels ou de grande envergure, il est nécessaire de savoir structurer
correctement son application dans le but de faciliter sa conception et sa maintenance. Les « design patterns », où
« patrons de conception » en français, constitue l'une des meilleures solutions à cette problématique. Avec le nouveau
modèle orienté objet de PHP 5 proche de celui de Java, l'implémentation des design patterns est facilitée.
- C’est un schéma qui forme une solution à un problème connu ou récurrent afin de de fournir un objet prêt à
l’emploi et configuré correctement.
- C’est un arrangement caractéristique de modules, reconnu comme bonne pratique en réponse à un problème de
conception d'un logiciel. Il décrit une solution standard, utilisable dans la conception de différents logiciels.
- Ce sont des solutions connues et dont la conception est due à l'expérience de programmeurs.
33
Monoem YOUNEB
Partie 2 - Techniques avancées
34
Monoem YOUNEB
Partie 2 - Techniques avancées
36
Monoem YOUNEB
Partie 2 - Techniques avancées
Le code ci - dessus met en œuvre le modèle singleton à l' aide d' une statique variables et la méthode de création
statique getInstance(). Notez ce qui suit:
Le constructeur __construct()est déclarée comme protégée pour empêcher lacréation d' une nouvelle instance en dehors de la classe
via l' newopérateur.
La méthode magique __clone()est déclarée comme privée pour empêcher leclonage d'une instance de la classe via l' newopérateur.
La méthode magique __wakeup()est déclarée comme privée pour empêcher Désérialisation d'une instance de la classe via la fonction
globale unserialize() .
Une nouvelle instance est créée via la liaison tardive statique dans la méthode de création statique getInstance() avec le mot -
clé static. Cela permet à la sous -classes de la classe Singleton dans l'exemple.
Le pattern singleton est utile lorsque nous devons nous assurer que nous avons une seule instance d'une classe pour la demande dans
le cycle de vie complet d'une application web. Cela se produit généralement lorsque nous avons des objets globaux (comme une classe
de configuration) ou une ressource partagée (comme une file d'attente d'événements).
37
Monoem YOUNEB
Partie 2 - Techniques avancées
38
Monoem YOUNEB
Partie 2 - Techniques avancées
I. Les design patterns
6. Strategy/ Stratégie
En encapsulant les algorithmes ci-dessus vous faites agréable et clair dans votre code que d'autres développeurs peuvent
facilement ajouter de nouveaux types de sortie sans affecter le code client.
Vous verrez comment chaque classe concrète "de sortie" implémente une OutputInterface - cela sert à deux fins, surtout il offre
un contrat simple qui doit être obéi par de nouvelles implémentations concrètes. Deuxièmement en mettant en œuvre une
interface commune , vous verrez dans la section suivante que vous pouvez maintenant utiliser typeHinting pour veiller à ce que
le client qui est l' utilisation deces comportements est du type correct dans ce cas 'OutputInterface'.
Le prochain extrait de code décrit comment une classe de client appelant peut utiliser un de ces algorithmes et même mieux
définir le comportement nécessaire à l'exécution:
40
Monoem YOUNEB
Partie 2 - Techniques avancées
II. Manipulation des données stockées
INSERT
41
Monoem YOUNEB
Partie 2 - Techniques avancées
II. Manipulation des données stockées
42
Monoem YOUNEB
Partie 2 - Techniques avancées
II. Manipulation des données stockées
Fermer la connexion
Requête préparée
Voici un exemple de requête à trous, préparée utilisant l'extension MySQLi:
43
Monoem YOUNEB
Partie 2 - Techniques avancées
1. Définition
- PDO signifie Php Data Object. Il s'agit d’une couche d'abstraction des fonctions d'accès aux bases de données;
- Les fonctions d'accès seront universelles: mysql_connect(), mysql_query(), mysql_result(), mysql_fetch_array(),
mysql_real_escape_string(), etc;
- Permet de se connecter à plusieurs bases de données;
- Il ne retourne aucune erreurs.
2. Manipulation de données
a. Connexion à la base de données
<?php
// try et catch pour les exeptions et les erreurs de connexions
Try{
// lancInitialiser PDO et préciser le type de la base de données dans notre cas mysql
$DB=new PDO(‘mysql:host=localhost;dbname=tuto’ , ‘root’ , ‘’);
}
Catch{ (PDOExeption $e)
Echo ‘La base de données n’\est pas disponible ressayer plutart’;
}
?>
44
Monoem YOUNEB
Partie 2 - Techniques avancées
<?php
$sql=(‘Select login,password FROM personne’);
Try{
$req=$DB->query($sql);
While($d=$req->(fetch(PDO:: FETCH_OBJECT)){
Echo’<pre>;
Print_r $d;
Echo $d->mail;
Echo’</pre>;
}
}
Catch{ (PDOExeption $e)
Echo ‘Erreurs de la reqête ’;
}
?>
45
Monoem YOUNEB
Partie 2 - Techniques avancées
- methode2
<?php
$d=array(
‘ login’ =>‘ TOTO’ ,
‘password’=>’hhhh’ );
46
Monoem YOUNEB
Partie 2 - Techniques avancées
<?php
$DB=beginTransaction();
$DB=execute (‘UPDATE personne SET login= " mmm" ,assword= " yyy" where id= " 129" ’);
?>
47
Monoem YOUNEB
Partie 2 - Techniques avancées
- La couche du modèle est représentée par la base de données, les librairies de fonctions, les classes, les fichiers, les
structures de données... Ce sont en fait tous les composants qui permettent de stocker et de manipuler les données.
- La couche vue est la couche logicielle qui assure l'affichage des données à l'utilisateur et l'interface Homme / Machine.
- La couche contrôleur est le moteur principal de l'application. Il fait la liaison entre le modèle et la vue.
Le contrôleur a la tâche d'analyser la requête de l'utilisateur, d'appeler le modèle adéquat et de retourner la valeur de ce dernier
à la vue qui prendra en charge son affichage.
48
Monoem YOUNEB
Partie 2 - Techniques avancées
b. Créer un fichier index.php sur la racine (elle va lier toutes les pages de notre site)
<?php
// lancement de la session
session_start();
// connexion avec le PDO
$bdd=new PDO(‘mysql:host=localhost;dbname=tuto’ , ‘root’ , ‘’);
// redirection vers les pages de notre site et vérifier si le fichier existe dans le serveur
if(!empty($_GET[‘page’]) AND is_File(‘controlleurs/’.$_GET[‘page’].’.php’)){
include (‘controlleurs/’.$_GET[‘page’].’.php) ’);
}
Else{
include (‘controlleurs/index.php ’);
}
?>
49
Monoem YOUNEB
Partie 2 - Techniques avancées
<?php
Function afficherNews()
{
// On signe a php qu’on va utiliser la connexion sur cette page
Global $bdd;
$news=array();
$req=$bdd->query(‘SELECT * FROM news’);
While ($data=$req->fetch())
{
$news[]=$data;
}
Return $news;
}
?> 50
Monoem YOUNEB
Partie 2 - Techniques avancées
<h1>Les news</h1>
<?php
Foreach($news as $n)
{
Echo $n[‘Titre’].’<br/>’;
Echo $n[‘Description’].’<br/>’;
}
?>
<h1>Accueil</h1>
<h2>Menu</h2>
<ul>
<li><a href="index.php?page=news">News</a></li>
<li><a href="#">Contact</a></li>
</ul>
51
Monoem YOUNEB
Partie 2 - Techniques avancées
IV. Le modèle MVC
Schéma de communication des page selon le modèle mvc
1- News Controlleurs
2- News Modele
3- News vues
52
Monoem YOUNEB
Partie 2 - Techniques avancées
53
Monoem YOUNEB
VI. Netoghraphie
1. http://jormes.developpez.com/articles/design-pattern-construction/
2. http://tahe.developpez.com/web/php/mvc/?page=page_1
54
Monoem YOUNEB