0% ont trouvé ce document utile (0 vote)
24 vues73 pages

Introduction à la POO en PHP

Transféré par

sidahmedsidimohamed2
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 PPTX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
24 vues73 pages

Introduction à la POO en PHP

Transféré par

sidahmedsidimohamed2
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 PPTX, PDF, TXT ou lisez en ligne sur Scribd

POO en pratique

Sidi Mohamed Ahmed M’bareck


Sommaire

• Une classe
• un objet
• Constructeur
• Visibilité
• Héritage

Sidi Mohamed Ahmed M’bareck


Qu'est-ce qu'une classe ?
• Les classes sont des moules, des patrons qui permettent
de créer des objets en série sur le même modèle. On peut
se représenter une classe comme le schéma de
construction ainsi que la liste des fonctionnalités d'un
ensemble d'objets.
• Une classe contient des propriétés et des méthodes :

 Propriété = variable de classe


 Méthode = fonction de classe

Sidi Mohamed Ahmed M’bareck


Exemple de classe
Class client{
private $id;
private $nom; Propriétés
private $prenom;

Public function afficherClient(){


//…
Méthodes
}
Public function ModifierClient(){
//…
}
}

Sidi Mohamed Ahmed M’bareck


Qu'est-ce qu'un objet ?

• Un objet est une instance de classe.


• Avec une classe, on peut créer autant d'objets qu'on veut.
• Une classe est une déclaration, alors qu'un objet est
contenu dans une variable, créé à partir de notre classe
avec le mot clé « new ».
• Appeler les méthodes de l'objet
• Pour appeler une méthode d'un objet, il va falloir utiliser
un opérateur : il s'agit de l'opérateur -> (une flèche
composée d'un tiret suivi d'un chevron fermant).

Sidi Mohamed Ahmed M’bareck


Exemple de création d'objets

Sidi Mohamed Ahmed M’bareck


Exercice 1: Création d'une classe
• Créez un fichier 01_Salle_creation.php
• Dans ce fichier, créez une classe ‘Salle' (avec un S
majuscule) avec les propriétés suivantes
▫ $longueur
▫ $largeur
• Créez deux objets ‘Salle' à partir de cette classe
▫ Remplissez leurs propriétés ($longueur et
$largeur)
▫ Affichez-les avec la fonction print_r()

Sidi Mohamed Ahmed M’bareck


• <?php

• class Salle{

• public $longueur;
• public $largeur;

• function __construct($longueur,$largeur){
• $this->longueur=$longueur;
• $this->largeur=$largeur;
• }

• }
• $salle1 = new Salle(8,5);
• $salle2 = new Salle();
• $salle3 = new Salle();

• $salle1->longueur=8;

• $salle1->largeur=5;

• $salle2->longueur=20;

• $salle2->largeur=10;

• print_r($salle1);
Le constructeur
• Comment marche un constructeur ?
▫ Le constructeur est une méthode dite "magique" :
elle est appelée automatiquement.
▫ Le constructeur est appelé lors de l'instanciation
d'une classe, c'est à dire la création d'un objet à
partir d'une classe.
• A quoi ça sert ?
▫ On appelle souvent le constructeur pour charger
des propriétés (par exemple une connexion à la
base de données).

Sidi Mohamed Ahmed M’bareck


Exercice 2 Constructeur
• Créez un fichier 04_Salle_constructeur.php
• Dans ce fichier, créez une classe ‘Salle' (S majuscule) avec les
propriétés $longueur et $largeur
• Créez un constructeur qui prend en paramètre deux variables $long et
$larg
▫ transférez ces valeurs sur les propriétés $longueur et $largeur.
▫ Créez deux objets de type ‘Salle' à partir de cette classe
 Remplissez leurs propriétés ($longueur et $largeur) au moment de les créer
 Affichez-les avec la fonction print_r()
 IG

Sidi Mohamed Ahmed M’bareck


Un exemple pratique
• Prenons l’exemple suivant qui comprendra
quelque rappels sur des notions essentielles de
l’objet et nous l’expliquons au fur et à mesure
d’avancer dans le cours
• un jeu de lute entre des animaux
Un exemple vaut mieux qu’un beau
discours
• Nous créerons des objets ‘’Animal’’
• Nous verrons comment créer des classes
• Comment gérer les fonctions
• La connexion à la base de données
• Hydratation des objets
• Ajout, suppression modification, et affichages
des données et d’autres paradigmes de l’objet
Création des objets
• On suppose que nous avions une classe Animal
• $animalO=new Animal;
• Ainsi,$animalO sera un objet de type Animal. On
dit que l'on instancie la classe Animal, que l'on
crée une instance de la classe Animal.
Hypothèse
• Supposons qu’on un Animal destiné à participer
à des combats
▫ Il a une puissance
▫ Il cumule de l’expérience après chaque combat
(incrémentation par exemple)
▫ Il subit des dommages après les combats
 Les dommage=les dommages initiales +la puissance
de l’animal qui vient de taper
Exemple un jeu de combat
• <?php
• class Animal{
• private $dommages; // Les dégâts d’un Animal.
• private $experience; // L'expérience d’unAnimal.
• private $puissance;
• public function taper($animalOATaper){
• $animalOATaper->dommages += $this->puissance;
• }
• public function gagnerExperience() {
• $this->experience= $this->experience+ 1;
• }

Sidi Mohamed Ahmed M’bareck


• Commentons ensemble le contenu de cette
méthode taper(). Celle-ci comporte une
instruction composée de deux parties :
• La première consiste à dire à PHP que l'on veut
assigner une nouvelle valeur à l'attribut
$dommages du Animal à taper.
• La seconde partie consiste à donner à PHP la
valeur que l'on veut assigner. Ici, nous voyons
que cette valeur est atteinte par $this->puissance.
Sidi Mohamed Ahmed M’bareck
• Maintenant, grosse question : la variable $this fait-elle
référence à l’Animal qui frappe ou au Animal frappé ?
Pour répondre à cette question, il faut savoir sur quel
objet est appelée la méthode. En effet, souvenez-vous
que $this est une variable représentant l'objet à partir
duquel on a appelé la méthode. Dans notre cas, on a
appelé la méthode taper()à partir de l’Animal qui
frappe, donc $this représente l’Animal qui frappe.
• L'instruction contenue dans la méthode signifie donc :
« Ajoute la valeur de la force de l’Animal qui frappe à
l'attribut $dommages de l’Animal frappé. »
Sidi Mohamed Ahmed M’bareck
• Maintenant, nous pouvons créer une sorte de petite mise
en scène qui fait interagir nos Animaux. Par exemple,
nous pouvons créer un script qui fait lutter les Animaux.
Le Animal 1 taperait le Animal 2 puis gagnerait de
l'expérience, puis le Animal 2 taperait le Animal 1 et
gagnerait de l'expérience. Procédez étape par étape :
▫ créez deux Animaux ;
▫ faites taper l’Animal 1 ;
▫ faites gagner de l'expérience à : Animal 1 ;
▫ faites taper l’Animal 2 ;
▫ faites gagner de l'expérience à : Animal 2.
• Réalisez l’exercice
• Ce script n'est qu'une suite d'appels de
méthodes. Chaque puce (sauf la première)
correspond à l'appel d'une méthode, ce que vous
savez faire. En conclusion, vous êtes aptes à
créer ce petit script ! Voici la correction :

Sidi Mohamed Ahmed M’bareck


• <?php
• $animalO1 = new Animal; // Un premier Animal
• $animalO2 = new Animal; // Un second Animal

• $animalO1->taper($animalO2); // $animalO1 frappe $animalO2
• $animalO1->gagnerExperience(); // $animalO1 gagne de l'expérience

• $animalO2->taper($animalO1); // $animalO2 frappe $animalO1
• $animalO2->gagnerExperience(); // $animalO2 gagne de l'expérience

Sidi Mohamed Ahmed M’bareck


• Cependant, un petit problème se pose. Puisque, à la
base, les deux Animaux ont le même niveau de dégâts,
la même expérience et la même force, ils seront à la
fin toujours égaux. Pour pallier ce problème, il
faudrait pouvoir assigner des valeurs spécifiques aux
deux Animaux, afin que la lutte puisse les différencier.
Or, vous ne pouvez pas accéder aux attributs en-
dehors de la classe ! Pour savoir comment résoudre ce
problème, je vais vous apprendre deux nouveaux mots
: accesseur et mutateur. Mais avant, j'aimerais
faire une petite parenthèse
Sidi Mohamed Ahmed M’bareck
• Exiger des objets en paramètre
• Reprenons l'exemple du code auquel nous
sommes arrivés et concentrons-nous sur la
méthode taper(). Celle-ci accepte un argument :
un Animal à taper. Cependant, qu'est-ce qui vous
garantit qu'on passe effectivement un Animal à
taper ? On pourrait très bien passer un argument
complètement différent, comme un nombre par
exemple :
Sidi Mohamed Ahmed M’bareck
• <?php
• $animalO = new Animal;
• $animalO->taper(42);
• Et là, qu'est-ce qui se passe ? Une erreur est générée car, à l'intérieur de
la méthode taper(), nous essayons d'appeler une méthode sur le
paramètre qui n'est pas un objet. C'est comme si on avait fait ça :
• <?php
• $animalOATaper = 42;
• $animalOATaper->dommages += 50; // Le nombre 50 est arbitraire, il
est censé représenter une force.
• Ce qui n'a aucun sens. Il faut donc s'assurer que le paramètre passé est
bien un Animal, sinon PHP arrête tout et n'exécute pas la méthode.
Pour cela, il suffit d'ajouter un seul mot : le nom de la classe dont le
paramètre doit être un objet.
Sidi Mohamed Ahmed M’bareck
• Dans notre cas, si le paramètre doit être un objet de type Animal, alors
il faudra ajouter le mot-clé Animal, juste avant le nom du paramètre,
comme ceci :
• <?php
• class Animal
• {
• // …

• public function taper(Animal $animalOATaper)
• {
• // …
• }
• }

Les getters et les setters
• Comme vous le savez, nous ne pouvons pas accéder directement
aux attributs de notre objet puisqu'ils sont privés : seule la classe
peut les lire et les modifier. Par conséquent, si vous voulez
récupérer un attribut, il va falloir le demander à la classe, de
même si vous voulez les modifier.
• Accéder à un attribut : l'accesseur
• À votre avis, comment peut-on faire pour récupérer la valeur
d'un attribut ? La solution est simple : nous allons implémenter
des méthodes dont le seul rôle sera de nous donner l'attribut
qu'on leur demande ! Ces méthodes ont un nom bien spécial : ce
sont des accesseurs (ou getters). Par convention, ces méthodes
portent le même nom que l'attribut dont elles renvoient la valeur.
Par exemple, voici la liste des gettersde notre classe Animal:
• <?php
• class Animal {
• private $puissance;
• private $experience;
• private $dommages;

• public function taper(Animal $animalOATaper){


• $animalOATaper->dommages += $this->puissance;
• }
• public function gagnerExperience() {
// On aurait aussi pu écrire « $this->experience+= 1 »
• $this->experience++;
}


• // Ceci est la méthode dommages() : elle se charge de renvoyer le contenu de
l'attribut $dommages.
• public function dommages() {
• return $this->dommages; }

• // Ceci est la méthode puissance() : elle se charge de renvoyer le contenu de
l'attribut $puissance.
• public function puissance() {
• return $this->puissance;
• }
• // Ceci est la méthode experience() : elle se charge de renvoyer le contenu de
l'attribut $experience.
• public function experience() {
• return $this->experience;
• }
• }
• Maintenant, comment cela se passe-t-il si vous voulez
modifier un attribut ? Encore une fois, il va falloir que vous
demandiez à la classe de le faire pour vous. Comme vous
l'aurez peut-être deviné, ce sera par le biais de méthodes
que l'on demandera à notre classe de modifier tel attribut.
• La classe doit impérativement contrôler la valeur afin
d'assurer son intégrité car, si elle ne le fait pas, on pourra
passer n'importe quelle valeur à la classe! Ces méthodes
ont aussi un nom spécial : il s'agit de setters (ou setters).
Ces méthodes sont de la forme setNomDeLAttribut(). Voici
la liste des setters (ajoutée à la liste des accesseurs) de
notre classeAnimal:
Contrainte d’intégrité : Fixons les règles
du jeux
• Puissance doit être un entier
• Entre 1 et 100
• Jetons un coup d’œil sur ce que cela donne
• Cours4/[Link]
• Voilà ce que j'avais à dire concernant ces getterset
setters. Retenez bien ces définitions, vous les
trouverez dans la plupart des classes !
• Retour sur notre script de lutte
• Maintenant que nous avons vu ce qu'étaient des
getterset des setters, nous pouvons améliorer notre
script de lutte. Pour commencer, je vais vous
demander d'afficher, à la fin du script, la puissance,
l'expérience et le niveau de dégâts de chaque Animal.
• Voici la correction : regardons le code ce qui affichera
:
• Le Animal 1 a de puissance, contrairement au
Animal 2 qui a de puissance.
Le Animal 1 a 1 d'expérience, contrairement au
Animal 2 qui a 1 d'expérience.
Le Animal 1 a 0 de dégâts, contrairement au
Animal 2 qui a 0 de dégâts.
• Comme nous l'avions dit, les valeurs finales des deux
Animaux sont identiques. Pour pallier ce problème,
nous allons modifier, juste après la création des
Animaux, la valeur de la puissance et de l'expérience
des deux Animaux. Vous pouvez par exemple
favoriser un Animal en lui donnant une plus grande
puissance et une plus grande expérience par rapport
au deuxième.
• Voici la correction que je vous propose (peu importe
les valeurs que vous avez choisies, l'essentiel est que
vous ayez appelé les bonnes méthodes) :
• Animal3
• Ce qui affichera :
Le Animal 1 a 10 de puissance, contrairement au
Animal 2 qui a 90 de puissance.
Le Animal 1 a 3 d'expérience, contrairement au
Animal 2 qui a 59 d'expérience.
Le Animal 1 a 90 de dégâts, contrairement au
Animal 2 qui a 10 de dégâts.
• Résultat affiché par le script
• Comme vous le voyez, à la fin, les deux Animaux
n'ont plus les mêmes caractéristiques !
L'auto-chargement de classes
Pour une question d'organisation, il vaut mieux créer
un fichier par classe. Vous appelez votre fichier
comme bon vous semble et placez votre classe dedans.
Pour ma part, mes fichiers sont toujours appelés «
[Link] ». Ainsi, si je veux pouvoir utiliser la
classe MaClasse, je n'aurais qu'à inclure ce fichier :
• <?php
• require '[Link]'; // J'inclus la classe.

• $objet = new MaClasse; // Puis, seulement après, je me sers de ma classe.
• Maintenant, imaginons que vous ayez plusieurs dizaines de
classes… Pas très pratique de les inclure une par une ! Vous
vous retrouverez avec des dizaines d'inclusions, certaines
pouvant même être inutile si vous ne vous servez pas de
toutes vos classes. Et c'est là qu'intervient l'auto-chargement
des classes. Vous pouvez créer dans votre fichier principal
(c'est-à-dire celui où vous créerez une instance de votre
classe) une ou plusieurs fonction(s) qui tenteront de charger
le fichier déclarant la classe. Dans la plupart des cas, une
seule fonction suffit. Ces fonctions doivent accepter un
paramètre, c'est le nom de la classe qu'on doit tenter de
charger. Par exemple, voici une fonction qui aura pour rôle de
charger les classes :
• <?php
• function chargerClasse($classe)
• {
• require $classe . '.php'; // On inclut la classe
correspondante au paramètre passé.
•}
Essayons maintenant de créer un objet pour voir si
il sera chargé automatiquement (je prends pour
exemple la classe Animal et prends en compte le
fait qu'un fichier [Link] existe).
• Erreur fatale ! La classe n'a pas été trouvée, elle
n'a donc pas été chargée… Normal quand on y
réfléchi ! PHP ne sait pas qu'il doit appeler cette
fonction lorsqu'on essaye d'instancier une classe
non déclarée. On va donc utiliser la fonction
spl_autoload_register en spécifiant en premier
paramètre le nom de la fonction à charger :
• Prenons le fichier animal3
• Nommons ce fichier « [Link] »
• Créez un fichier test
• Et placez
spl_autoload_register('chargerClasse');

On enregistre la fonction en autoload pour qu'elle


soit appelée dès qu'on instanciera une classe non
déclarée.
• Exécutez la classe test pour voir ce que cela
donne
• Un objet se crée grâce à l'opérateur new.
• L'accès à un attribut ou à une méthode d'un objet se fait grâce à
l'opérateur «->».
• Pour lire ou modifier un attribut, on utilise des getters et
des settters.
• Le constructeur d'une classe a pour rôle principal d'initialiser
l'objet en cours de création, c'est-à-dire d'initialiser la valeur des
attributs (soit en assignant directement des valeurs spécifiques,
soit en appelant diverses méthodes).
• Les classes peuvent être chargées dynamiquement (c'est-à-dire
sans avoir explicitement inclus le fichier la déclarant) grâce à
l'auto-chargement de classe (utilisation de
spl_autoload_register).
La visibilité
• Privé (private)
▫ N'est accessible que dans la classe courante.
• Protégé (protected)
▫ Est accessible dans la classe courante et dans les
classes dérivées.
• Publique (public)
▫ Est accessible partout, même à l'extérieur de la
classe.

Sidi Mohamed Ahmed M’bareck


L'héritage

• L'héritage permet de hiérarchiser les classes.


• Les classes mères sont génériques, elles mettent
en place des fonctionnalités communes à une ou
plusieurs classes.
• Les classes filles sont spécifiques, elles héritent
des fonctionnalités des classes mères.
L'héritage (UML)
Exemple Héritage (1/2)
Héritage (2/2)
Visibilité
• Voici deux exemples qui vont vous permettre de
bien cerner la portée des propriétés et méthodes
(private, public et protected)
• <? class ExempleMethodes { public $propriete1;
private $propriete2; protected $propriete3;
function __construct(){ $this->propriete1=1;
$this->propriete2=2; $this->propriete3=3;
•}
• Pulic function methode1(){ echo 'méthode
publique'; $this->propriete2++; //autorisé car
référencé au sein de la classe $this->propriete3+
+; //autorisé car référencé au sein de la classe
$this->methode2(); //autorisé car référencé au
sein de la classe $this->methode3(); //autorisé
car référencé au sein de la classe
•}
• protected function methode2(){ echo 'méthode
protégée'; } private function methode3(){ echo
'méthode privée'; } } $obj = new
ExempleMethodes(); $obj->methode1();
//autorisé echo $obj->propriete1; // autorisé
echo $obj->propriete2; // non autorisé echo
$obj->propriete3; // non autorisé $obj-
>methode2(); //non autorisé $obj-
>methode3(); //non autorisé ?>
Exercice
• Ecrire, dans un fichier [Link], une classe
pour représenter des points en 2 dimensions.
Elle comprendra au moins 1 constructeur ainsi
qu'une méthode pour calculer la distance d'un
point à un autre
Retour sur notre exemple Animal
• Quelques notions essentielles
Les constantes :utilité
• Les constantes de classe permettent d'éviter tout
code muet. Voici un code muet :
• <?php
• $animalO = new Animal(50);
• Pourquoi est-il muet ? Tout simplement parce
qu'on ne sait pas à quoi « 50 » correspond.
Qu'est-ce que cela veut dire ? Étant donné que je
viens de réaliser le script, je sais que ce « 50 »
correspond à la puissance d’un Animal.
Constante c’est quoi
Une constante est une sorte d'attribut appartenant
à la classe dont la valeur ne change jamais. Ceci
est peut-être un peu flou, c'est pourquoi nous
allons passer à la pratique. Pour déclarer une
constante, vous devez faire précéder son nom du
mot-clé const. Faites bien attention, une constante
ne prend pas de « $ » devant son nom ! Voici donc
comment créer une constante :
Hypothèse sur le setter de la puissance
• Supposons que la puissance peut prendre 3 valeurs
possibles :
• 20, qui veut dire que l’Animal aura une faible puissance ;
• 50, qui veut dire que l’Animal aura une puissance
moyenne ;
• 80, qui veut dire que l’Animal sera très fort.
• Au lieu de passer ces valeurs telles quelles, on va plutôt
passer une constante au constructeur. Ainsi, quand on
lira le code, on devinera facilement que l'on passe une
puissance moyenne au constructeur. C'est bien plus
facile à comprendre qu'un nombre quelconque.
• <?php
• class Animal{
• private $puissance;
• private $localisation;
• private $experience;
• private $dommages;
• // Déclarations des constantes en rapport avec la puissance.
• const PUISSANCE_PETITE = 20;
• const PUISSANCE_MOYENNE = 50;
• const PUISSANCE_GRANDE = 80;
• public function deplacer(){ }
• public function taper(){ }
• public function gagnerExperience(){ }}
Exemple de setter puissance
• public function setPuissance($puissance)
• {
• // On vérifie qu'on nous donne bien soit une «
PUISSANCE_PETITE », soit une « PUISSANCE_MOYENNE »,
• // soit une « PUISSANCE_GRANDE ».
• if (in_array($puissance, [self::PUISSANCE_PETITE,
• self::PUISSANCE_MOYENNE, self::PUISSANCE_GRANDE]))
• {
• $this->puissance = $puissance;
• }
• }
• Notez qu'ici les noms de constantes sont en majuscules :
c'est encore et toujours une convention de dénomination.
• Les attributs et méthodes statiques
• Comme je l'ai brièvement dit dans l'introduction, les
méthodes statiques sont des méthodes qui sont faites pour
agir sur une classe et non sur un objet. Par conséquent, je
ne veux voir aucun $this dans la méthode ! En effet, la
méthode n'étant appelée sur aucun objet, il serait illogique
que cette variable existe. Souvenez-vous : $this est un
paramètre implicite. Cela n'est vrai que pour les méthodes
appelées sur un objet !
• Même si la méthode est dite « statique », il est
possible de l'appeler depuis un objet ($obj-
>methode Statique()), mais, même dans ce
contexte, la variable $this ne sera toujours pas
passée !
• Pour déclarer une méthode statique, vous devez
faire précéder le mot-clé function du mot-
clé static après le type de visibilité.
• Dans le code precedent nous avons definit des
nouvelles regles (contraintes d’integrité ) pour la
puissance : ré-ecrivez la classe animal4 en
prenant en considération cette réalité
L’introduction de self pour invoquer les
constantes
• Jetons un coup d’œil sur la classe animal5
Les attributs statiques

• Le principe est le même, c'est-à-dire qu'un


attribut statique appartient à la classe et non à
un objet. Ainsi, tous les objets auront accès à cet
attribut et cet attribut aura la même valeur pour
tous les objets.
• La déclaration d'un attribut statique se fait en
faisant précéder son nom du mot-clé static,
comme ceci :
Voici la façon avec laquelle on declare l’attribut
static :

// Variable statique PRIVÉE.


private static $_texteADire = 'Je vous encourage!';
Pour l’appeler:

echo self::$_texteADire;
Regardons l’exemple animal6 pour plus de détails
• Quelques nouveautés dans ce code nécessitent des explications.
Premièrement, à quoi sert un attribut statique ?
• Nous avons vu que les méthodes statiques sont faites pour agir sur la
classe. D'accord, mais qu'est-ce qu'on peut faire sur une classe ? Et bien
tout simplement modifier les attributs de celle-ci car, comme je l'ai déjà
dit, des attributs appartenant à une classe ne sont autre que des attributs
statiques ! Les attributs statiques servent en particulier à avoir des
attributs indépendants de tout objet. Ainsi, vous aurez beau créer des tas
d'objets, votre attribut aura toujours la même valeur (sauf si l'objet
modifie sa valeur, bien sûr). Mieux encore : si l'un des objets modifie sa
valeur, tous les autres objets qui accéderont à cet attribut obtiendront la
nouvelle valeur ! C'est logique quand on y pense, car un attribut statique
appartenant à la classe, il n'existe qu'en un seul exemplaire. Si on le
modifie, tout le monde pourra accéder à sa nouvelle valeur.
• avec le mot-clé self, ce qui veut dire (en gros) « moi-même » (=
la classe). Notre ligne veut donc dire : « Dans moi-même,
donne-moi l'attribut statique $_texteADire. » (Je sais ce n'est
pas bien français mais c'est la meilleure traduction mot à mot
que j'ai pu trouver.)
• N'oubliez pas de mettre un « $ » devant le nom de l'attribut.
C'est souvent source d'erreur donc faites bien attention.
• Nous allons maintenant faire un petit exercice. Je veux que vous
me fassiez une classe toute bête qui ne sert à rien. Seulement, à
la fin du script, je veux pouvoir afficher le nombre de fois où la
classe a été instanciée. Pour cela, vous aurez besoin d'un attribut
appartenant à la classe (admettons $_compteur) qui est
incrémenté dans le constructeur.
• Voici la correction :
• animal7
• le retour du mot-clé self… Pourquoi pas $this ?
Souvenez-vous : on n'accède pas à un attribut
statique avec $this mais
avec self ! self représente la classe tandis
que $this représente l'objet actuellement créé. Si
un attribut statique est modifié, il n'est pas
modifié uniquement dans l'objet créé mais dans
la structure complète de la classe !
A récapituler
• 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, 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 constantes de classe sont utiles pour éviter d'avoir un code
muet, c'est-à-dire un code qui, sans commentaire, ne nous informe
pas vraiment sur son fonctionnement.
• Les attributs et méthodes statiques sont utiles lorsque l'on ne veut
pas avoir besoin d'un objet pour s'en servir.
TP Générateur de formulaire

Exercice

Pour mettre en pratique la notion d’orienté objets, Vous allez créer une class
« form » permettant la génération des champs du formulaire suivants :
 Le champ input
 Le champ select
 Le champ submit
Pour exploiter notre nouvelle class, vous allez créer un fichier nommé « [Link] »
contenant un formulaire de 4 champs « email », « tel »,nom et sexe, les données
saisies seront stocké dans la table personne de la base de donné BD2.

Vous aimerez peut-être aussi