Vous êtes sur la page 1sur 23

Introduction la programmation II

Veronica Diego
Mercredi 13 avril 2005
Sujets qui seront abords :

Introduction la programmation oriente objet

Les classes en Php 4 et 5

Les objets dans Php 4 et 5

Utilisation de librairies de classe
Introduction la programmation
oriente objet
Avant la version 4 de php, la programmation oriente objet ntait pas
propose dans ce langage. Les programmeurs devaient donc se dbrouiller
pour organiser des fonctions de la manire la plus propre possible en
essayant de les faire communiquer entre elles et de leurs faire partager des
donnes sans pour autant rendre le code incomprhensible. Par rapport
C++ ou Java, Php faisait figure de langage brouillon avec lequel il tait
trs difficile de dvelopper du code rutilisable et maintenable facilement.
La programmation oriente objet est n de ce genre de constat, dabord en
1972 avec SmallTalk, mais surtout en 1983, lorsque Bjarn Stroustrup mit au
point une extension oriente objet du langage C : le C++. Depuis, les mettre
mots en matire de programmation sont rutilisabilit et facilit de
maintenance. Le code doit tre organis de faon clair et logique de
manire atteindre ces objectifs. La programmation objet fournit un cadre
idal ce genre de ralisation, car elle permet une meilleure
conceptualisation, elle rend le principe de fonctionnement dun programme
plus humain en permettant de sabstraire totalement du code pour
satteler la tche principale : trouver la solution un problme.
Les classes Php 4 et 5
Dfinition :
Une classe est un ensemble de variables et de fonctions.

Utilisation :
Une classe dmarre toujours par le mot class suivit du nom de la
classe. Ensuite, nous crivons entre accolade ({ }) les listes des
variables membres et celles des mthodes (l'ordre n'a aucune
importance), de la mme faon que nous dfinirions des variables et
des fonctions.
Les classes
Exemple :

<?php
//php 5
class Animal {

// les trois caractristiques dun animal
public $type;
public $nom;
public $nourriture;

// laction que lanimal peut effectuer
function emettreSon(){
print("Le $this->type pousse son cri !<br/>");
}
}
?>

Note : en Php 4, il faudrait mettre "var" la place de "public"
Les objets dans php 4 et 5
Un objet regroupe toutes les informations et
actions disponibles pour une entit donne. Les
informations, que nous appelons indiffremment
attributs , champs , proprits ou
encore membres , sont matrialises par des
variables, tandis que les actions, que nous
appelons mthodes , sont matrialises par
des fonctions.
Les objets dans php 4 et 5
Pour comprendre la notion dobjet, prenons un
exemple. Imaginons que nous souhaitons
simuler un zoo et, plus prcisment, le moment
o le gardien vient nourrir chaque animal. Nous
voulons, en outre, que chaque animal lance son
cri lorsque le gardien le nourrit (le lion va rugir,
le mouton bler, etc.), nous voulons galement
que le gardien donne le bon type de nourriture
chaque animal.
Les objets dans php 4 et 5
Dans notre exemple, nous sommes en prsence
de deux objets : un gardien et un animal.
Chacun des deux sera dfini par ses
caractristiques propres et par les actions quil
peut effectuer. Les caractristiques du gardien
seront par exemple son nom et son prnom, et
celles de lanimal duquel il sapproche seront
son genre (koala, lion), son nom et la
nourriture quil consomme.
Les objets dans php 4 et 5
Voici en Php 5 quoi ressemblerait la classe correspondant notre objet animal :

class Animal {

// les trois caractristiques dun animal
public $type;
public $nom;
public $nourriture;

// laction que lanimal peut effectuer
function emettreSon(){
print("Le $this->type pousse son cri !<br/>");
}
}

Note : en Php 4, il faut remplacer "public" par "var"

Voir fichier zoo_1.php
Les objets dans php 4 et 5
Visibilit des variables (Php 5):

En effet, dans un objet, il est possible de spcifier qui pourra accder quelles variables.
Il existe trois niveaux de visibilit, symboliss par trois mots cls :

public : indique que la variable est publique. Dans ce cas, la variable est
directement accessible de l'extrieur de la classe (zoo_2a.php)

private : indique que la variable est prive. Dans ce cas, la variable n'est
accessible qu' l'intrieur de la classe. Si vous souhaitez y accder de l'extrieur,
il faudra crire une mthode qui la retourne. (zoo_2b.php)

protected : cette visibilit se situe entre prive et publique. Dans ce cas, la
variable ne sera pas accessible de l'extrieur de la classe, sauf pour les classes
filles qui hriteront de ce champ comme champ priv (nous reviendrons plus tard
sur la notion de classe fille, avec l'hritage). (zoo_2c.php)
Les objets dans php 4 et 5
Naissance des objets:

Pour utiliser une classe, il faut en crer une instance grce l'oprateur new (il s'agit
de "l'instanciation" d'une classe) :

<?php
$animal = new Animal();
?>

Un problme se pose : nous souhaitons indiquer quels sont le nom et la race de
l'animal et quelle nourriture il mange. Il est intressant de pouvoir passer ces valeurs
en paramtre lors de la cration de l'objet, autrement dit de pouvoir crire :

<?php
$animal = new Animal("lion", "Tony", "viande");
?>
Les objets dans php 4 et 5
Constructeurs :

C'est justement ce que permettent les constructeurs. Un constructeur est
une mthode spciale qui est appele lors de l'instanciation de la classe
avec new. Ici nous touchons une diffrence entre Php 4 et Php 5. En
effet, la fonction constructeur en Php 4 est dfinie par une fonction ayant le
mme nom que la classe, tandis que en Php 5 le constructeur est affubl
d'un nom spcial : __construct. Nous allons donc pouvoir crire cette
mthode de faon ce qu'elle assigne les valeurs passes en paramtres
aux variables membres :
Les objets dans php 4 et 5
//php 4
class Animal {

// les trois caractristiques dun animal
var $type;
var $nom;
var $nourriture;

//le constructeur de notre classe
function Animal($type, $nom, $nourriture) {
$this->type = $type;
$this->nom = $nom;
$this->nourriture = $nourriture;
}


Les objets dans php 4 et 5
// laction que lanimal peut effectuer
function emettreSon(){
print("Le $this->type pousse son cri !<br/>");
}

function getType() {
return $this->type;
}

function getNom() {
return $this->nom;
}

function getNourriture() {
return $this->nourriture;
}
}
Les objets dans php 4 et 5
//php5
class Gardien {

// les deux caractristiques dun gardien
public $nom;
public $prenom;

//le constructeur prends deux variables en paramtres
function __construct($nom,$prenom){
$this->nom = $nom;
$this->prenom = $prenom;
}

// laction que le gardien peut effectuer
function nourrir($animal){
print("$this->nom $this->prenom donne de la $animal->nourriture" . " au $animal-
>type.<br/>");
$animal->emettreSon();
}
}

Voir fichier zoo_3.php
Les objets dans php 4 et 5
Destructeur:

Lorsque les objets ne sont plus utiliss, ils sont dtruits. Php 5 s'occupe automatiquement de
compter le nombre de rfrences sur les objets afin de savoir quand ils ne sont plus utiliss et
peuvent donc tre effacs sans danger. Lors de cette destruction, il peut tre ncessaire de
raliser des oprations pour que la destruction de l'objet soit correctement effectue. Pour cela,
une classe peut possder un destructeur, qui comme le constructeur est une mthode portant un
nom spcial : __destruct. A la diffrence du constructeur, le destructeur ne peut accepter de
paramtres puisqu'il est appel automatiquement par Php. Ajoutons un destructeur notre classe
Animal afin d'afficher un message lors de sa destruction :

//le destructeur de notre classe
function __destruct() {
print("Un objet de type Animal ($this->type) a t dtruit.<br/>");
}


Voir fichier zoo_4.php
Les objets dans php 4 et 5
Lhritage :

L'hritage permet de faire driver une classe d'une autre afin qu'elle hrite de tous
ses champs de type public et protected ainsi que de toutes ses mthodes. Nous
pouvons ensuite en ajouter et aussi redfinir ces mthodes afin de les spcialiser. Ici,
nous allons garder notre classe Animal et en faire hriter une classe Lion et une
classe Koala.

class Lion extends Animal {
function __construct($nom) {
$this->type = "lion";
$this->nourriture = "viande";
parent::__construct($nom);
}
function emettreSon() {
print("Grooooooooar!<br/>");
}
}

Les objets dans php 4 et 5

Note : loprateur :: permet daccder aux fonctions et
variables de la classe parente, parent aurait pu tre
remplac par le nom de la classe parente (Animal). Pour
accder une variable de classe qui nest pas encore
instancie, il faut utiliser loprateur :: avec une variable
static (ex: public static $type)

Voir fichier zoo_5.php

Utilisation de librairies de classes
Dfinition :

L'appellation de librairie vient d'un import abusif du mot "library" en
anglais. C'est un synonyme de bibliothque. Une librairie est un
ensemble de mthodes, d'attributs et de classes runis dans un
fichier directement utilisable l'intrieur d'une application.
Une librairie un Application Programmers Interface (API), cest--
dire une liste de fonctions (ou procdures ou mthodes) et de
variables (ou classes) documentes et que vous pouvez utilisez.

Utilisation de librairies de classes
Utilisation :
Pour utiliser une librairie, il suffit dinstaller sur son serveur
la librairie en question quelque part (sur le serveur), puis
dans votre page Php, il faut faire un include avec le
chemin jusqu la librairie.
Exemple : include('/path/to/set/here/adobd.inc.php');
Ensuite, il faut se rfrer l'API pour connatre les
fonctions utilisable.
Tableau rcapitulatif
Php 4 Php 5
Constructeur

Fonction ayant le mme nom que la
classeEx : Class Etudiant { function
Etudiant()
Fonction __construct()
Ex : Class Etudiant {
function __construc()
Notion destructeur dobjets

N/A Fonction __destruct()
Ex :function __destruct()
Notion de clonage

N/A Fonction __clone()
Ex :function __clone()
Traitement des erreurs

Via des fonctions spcifiques
Ex :function division_par_zero ()
Possibilit dutiliser les notions try
{} et catch {}
Niveaux de visibilits des variables

$GLOBAL Public : variable accessible de
l'extrieur de la classe
Private : variable accessible
uniquement l'intrieur de la classe
Protected : variable non accessible
depuis l'extrieur de la classe sauf
pour les classes filles.
Etc.
Rfrences
Classes et librairies PHP :

Borde, N., Marhin, A. & Thevenet, M. (2004). Php 5. Micro Applications :
Paris.
Choi, W., Kent, A., Lea, C., Prasad, G. et Ullman, C. (2000). Matrisez Php
4. Wrox : Paris.
http://tecfa.unige.ch/guides/php/php5_fr/language.oop.html
http://tecfa.unige.ch/guides/php/php5_fr/language.oop5.html
http://tecfa.unige.ch/guides/tie/pdf/files/php-libs.pdf

TP
Prenez le fichier "tp.php" et ajoutez du code
permettant l'utilisation des fonctions dfinies
dans les classes.
Exemple :

Vous aimerez peut-être aussi