PHP 2
PHP 2
PHP 2
2018 – 2019
Définition
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).
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() ».
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 ;
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.
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 :
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.
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.
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 ».
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).
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 ».
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 ».
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.