Vous êtes sur la page 1sur 8

École régionale du numérique - Développement d'une application Web

2018 – 2019

Les classes en PHP


Cours n°2

M. Ducongé - Barrère 1/8


École régionale du numérique - Développement d'une application Web
2018 – 2019
Table des matières

La programmation orientée objet .................................................................................................................... 3


Définition ..................................................................................................................................................... 3
Les avantages .............................................................................................................................................. 3
La logique des classes et des objets............................................................................................................... 3

Construction d’une classe et utilisation ............................................................................................................ 4


Introduction ................................................................................................................................................. 4
Création d’une classe.................................................................................................................................... 4
Déclaration des constantes et propriétés de classe........................................................................................ 5
Constantes .............................................................................................................................................. 5
Propriétés................................................................................................................................................ 5
Portée des propriétés et méthodes................................................................................................................ 5
Public ...................................................................................................................................................... 5
Private ..................................................................................................................................................... 6
Protected ................................................................................................................................................ 6
Création d’un objet et utilisation ................................................................................................................... 6
La pseudo-variable $this ............................................................................................................................... 6
Les méthodes ............................................................................................................................................... 7
Constructeur............................................................................................................................................ 7
Accesseur et mutateurs ........................................................................................................................... 7
Commentaires .............................................................................................................................................. 8
Classe ...................................................................................................................................................... 8
Fonctions................................................................................................................................................. 8
Variables ................................................................................................................................................. 8

M. Ducongé - Barrère 2/8


École régionale du numérique - Développement d'une application Web
2018 – 2019
LA PROGRAMMATION ORIENTEE OBJET

Définition

La programmation orientée objet est un modèle de langage de programmation qui s'articule


autour d'objets et de données, plutôt que d'actions et de logique. Par le passé, un programme
était une procédure logique qui récupérait des données en entrée, les traitait puis produisait des
données en sortie.

Les avantages

L'orienté objet remplace le procédural dans les grands programmes car il présente de multiples
avantages:

- Facilité de compréhension (Permet de regrouper toutes informations sur un objet dans le code.
Si mon programme gère des voitures, l'objet du même nom contiendra la marque de celle-ci, sa
vitesse ainsi que sa couleur, etc...)

- La modularité du code (On peut généralement récupérer 80 % du code d'un projet pour le
réutiliser sur un projet similaire contrairement à la programmation procédurale. De plus les
objets permettent d'éviter la création de code redondant, permettant donc un gain de temps et
donc d'argent).

La logique des classes et des objets

En programmation orientée objet, un objet est un conteneur d'informations représentant un sujet


manipulé dans le programme.

La classe est un modèle à partir duquel les comportements (méthodes) et caractéristiques


(attributs) sont définies. Ceux-ci sont généralement basés sur ceux qu'ils représentent :
Un objet de classe voiture aura des variables représentant le modèle, la couleur, la vitesse ... et
des méthodes pour récupérer ou modifier ces variables.

M. Ducongé - Barrère 3/8


École régionale du numérique - Développement d'une application Web
2018 – 2019
CONSTRUCTION D’UNE CLASSE ET UTILISATION

Introduction

Avant de comprendre comment créer un objet, il faut au préalable savoir comment est composé
une classe. Pour gagner en lisibilité et par convention, le mieux est de mettre une classe dans
un fichier unique avec pour nom de fichier le nom de la classe.

Pour pouvoir l’utiliser, il suffit de l’inclure dans le fichier désiré avec un « require() ».

Création d’une classe

Une classe commence toujours par le mot « class » suivi de son nom. Par convention, ce dernier
doit avoir sa première lettre en majuscule. Une classe peut contenir ses propres constantes,
variables (appelées "propriétés" ou "attributs"), et fonctions (appelées "méthodes").

Son contenu doit être entre une paire d'accolades contenant la définition des propriétés et des
méthodes appartenant à la classe. Ci-dessous le contenu type d’une classe.

class Personnage
{
public $force;
private $localisation;
private $experience ;
private $degats ;

public function __construct(){


$this->localisation = "Loooouuurrdes !!!";
}

public function parler($phrase)


{
if($phrase != ‘’’’){
echo $phrase ;
}else{
echo 'Je suis un personnage ! Ma localisation est : '.$this->localisation ;
}
}
}

M. Ducongé - Barrère 4/8


École régionale du numérique - Développement d'une application Web
2018 – 2019
Déclaration des constantes et propriétés de classe

Constantes
Il est possible de définir des valeurs constantes à l'intérieur d'une classe, qui ne seront pas
modifiables. Les constantes diffèrent des variables normales du fait que l'on n'utilise pas le
symbole $ pour les déclarer ou les utiliser. La visibilité par défaut des constantes de classe est
public.

const CONSTANTE = "Ma constante";

L’appel des constantes se fait avec le nom de la classe suivi des caractères :: et du nom de la
constante tel que suivant :

echo Personnage::CONSTANTE; // Affichera Ma constante

Attention les constantes de classe sont allouées une fois par classe, et non pour chaque instance
de classe.

Propriétés

Les propriétés sont des variables au sein d’une classe. Elle se déclarent comme une variable
classique avec un dollar suivi de son nom et un point-virgule pour marquer la fin de
l’instruction. Pour accéder à une variable de classe, il faut utiliser un objet ou la variable pseudo
élément « $this », voir plus loin dans le cours.

public $force ;

Il est préférable de spécifier une visibilité pour chaque déclaration, par défaut, elle est publique,
voir le point suivant pour plus d’informations.

Portée des propriétés et méthodes

Les variables et les fonctions ont une visibilitée. C’est à dire qu’elles peuvent être accessibles
partout ou limitées à un contexte défini. Cette visibilité permet de sécuriser certaines données
très simplement. Il s'agit des visibilités publiques, privées ou protégées qui sont respectivement
définies dans la classe au moyen des mots-clés « public », « private » et « protected ».

Public
C'est l'accès par défaut de PHP si l'on ne précise aucune visibilité. Tous les attributs et méthodes
qui sont déclarées sans l'un de ces trois mots-clés seront considérés automatiquement comme
publiques.

Le mot-clé « public » indique que les propriétés et méthodes d'une classe seront accessibles
depuis n'importe où dans l’application ou bien dans les classes mères héritées ou classes filles
dérivées (la notion d’héritage sera expliquée un peu plus tard).
M. Ducongé - Barrère 5/8
École régionale du numérique - Développement d'une application Web
2018 – 2019
Private
Le mot-clé « private » permet de déclarer des attributs et des méthodes qui ne seront visibles et
accessibles directement que depuis l'intérieur de la classe ou elles ont été déclarées. C'est à dire
qu'il devient impossible de lire ou d'écrire la valeur d'un attribut privé directement en faisant :
« $perso->degats ; »

Lorsqu’on est dans la classe ou a été créé la méthode ou la variable, on peut y accéder en
utilisant la variable objet « $this ». Cette notion est décrite un peu plus loin dans le cours.

Protected
L'accès protégé « protected » est un intermédiaire entre l'accès publique et l'accès privé. Il
permet d'utiliser dans la classe enfant les attributs, les méthodes publiques et protégées
déclarées dans la classe parente. Cette relation interclasses s’appelle héritage.

Création d’un objet et utilisation

Lorsqu’on est à l’extérieur de la classe et qu’on veut accéder aux élément de la classe, il faut
créer un objet. Pour ce faire, il faut utiliser le mot « new » suivi du nom de la classe et de
parenthèses. La ligne ci-dessous permet de créer un objet de la classe « Personnage ». On dit
alors que « $perso » est une instance de la classe « Personnage ».

$perso = new Personnage();

Lors de la création d’un objet, la méthode magique « __construct() » est appelée. Elle sert
majoritairement à initialiser les propriétés de l’objet à créer ou exécuter des instructions.

Un objet peut servir à appeler une fonction ou atteindre un attribut (nous le verrons plus tard).
Pour accéder au contenu de la classe, il faut utiliser l’opérateur ->. Ce dernier sert à accéder aux
éléments de la classe. L’exemple ci-dessous appelle une fonction de la classe « Personnage. »

$perso->parler();

Vous pouvez créer autant d’objets que nécessaire pour votre application. Chacun d’entre eux
aura ses propres propriétés. Par exemple, la modification de l’attribut « localisation » sur un
objet de la classe « Personnage », cela n’impactera pas les autres instances.

La pseudo-variable $this

La pseudo-variable « $this » est disponible lorsqu'une méthode est appelée depuis un contexte
objet. « $this » est une référence à l'objet appelant (habituellement, l'objet auquel la méthode
appartient, mais ce peut être un autre objet si la méthode est appelée de manière statique depuis
le contexte d'un autre objet).

M. Ducongé - Barrère 6/8


École régionale du numérique - Développement d'une application Web
2018 – 2019
Par exemple, lors de l’appel de la méthode « $perso->parler() ; », l’attribut « localisation » est
déclaré en « private ». Pour y accéder, il faut utiliser la variable « $this » suivi du nom de la
variable sans le dollar.

L’affectation d’une variable de classe s’effectue toujours avec le caractère égal suivi de la
donnée.

« $this->localisation = ‘’Lourdes’’ ; »

Les méthodes

Les méthodes dans une classe ne changent pas trop d’une fonction classique. Elles se déclarent
de la même manière sauf qu’il faut préciser leurs portées (public private, protected). Les valeurs
de retour sont également facultatives.

Constructeur
Lors de la déclaration de l’objet avec « new », il est possible d’exécuter un certain nombre
d’instructions. Cette fonction est dite méthode magique par PHP, car elles sont prédéfinies et
réservé.

function __construct() {
echo "Cette méthode a été appelée lors de la création de mon objet !!";
}

C’est relativement utile lorsqu’on souhaite initialiser les propriétés par défaut d’un objet. Vous
pouvez bien évidemment appeler d’autre fonction de la classe à partir de cette méthode ou
exécuter d’autres instructions.

Accesseur et mutateurs
Il peut être nécessaire parfois de venir accéder et modifier depuis l’extérieur de la classe un
attribut d’une classe déclaré en « private ». Pour ce faire, PHP à implémenté des méthodes
magiques. Leurs utilisation fonctionnent uniquement dans un contexte d’objet et par conséquent
ne peuvent pas être utilisés en « static ».

Voir doc Php pour plus d’informations à ce sujet.

Vous pouvez également créer vos propres fonctions getter et setter. Par convention, il faut que
leurs nom commencent respectivement par « get » et « set » et prennent en paramètre la
nouvelle valeur de la variable pour le « set » et retourner la bonne variable pour le « get ».

public function getLocalisation()


{
return $this->localisation ;
}

M. Ducongé - Barrère 7/8


École régionale du numérique - Développement d'une application Web
2018 – 2019

public function SetLocalisation($value)


{
$this->localisation = $value;
}

Commentaires

Classe
Il est vivement recommandé de commenter son code. Concernant la classe, ils doivent être
placés la ligne avant le mot-clé « class ». Le texte doit être explicite, permettre de comprendre
l’utilité de la classe et d’identifier le ou les auteurs.

/**
* La classe Personnage permet de créer un personnage, de le faire parler et de lui
* infliger des dégâts.
*
* @author Toto <toto[@]toto.com>
*/

Fonctions
La syntaxe pour commenter des fonctions reste la même que pour les classes. Seul les
paramètres changent. Ils définissent les paramètres formels, précise la valeur de retour etc.

/**
* Sert à faire parler un personnage
* @param string $phrase Contenu de la phrase que doit dire le perso
* @return void
*/
public function parler($phrase = ‘’’’)
{
...
}

Variables
Il est parfois nécessaire de commenter certaines variables pour faciliter leur compréhension.
Par exemple, sans le commentaire suivant, il aurait fallu analyser le code pour savoir que la
force doit être exprimée en pourcentage.

public $force; // force en pourcentage

M. Ducongé - Barrère 8/8

Vous aimerez peut-être aussi