Php3 intègre un soupçon de caractéristiques empruntées aux langages orientés
objet, c'est-à-dire la possibilité d'utiliser des objets, entités regroupant des données
et des fonctions au sein d'une structure et rendant la programmation plus simple qu'en programmation habituelle
(appelée programmation procédurale par opposition à la programmation orientée objet).
On appelle classe la structure d'un objet, c'est-à-dire la déclaration de
l'ensemble des entités qui composeront un objet. Un objet est donc "issu" d'une classe,
c'est le produit qui sort d'un moule.
En réalité on dit qu'un objet est une instanciation
d'une classe, c'est la raison pour laquelle on pourra parler indifféremment d'objet ou d'instance
(éventuellement d'occurrence).
Une classe est composée de deux parties:
- Les attributs (parfois appelés données membres): il s'agit des données représentant
l'état de l'objet
- Les méthodes (parfois appelées fonctions membres): il s'agit des opérations applicables aux objets
Pour pouvoir manipuler des objets, il est essentiel de définir des classes,
c'est-à-dire définir la structure d'un objet. Avec Php, cette définition se fait
de la manière suivante:
class Nom_de_la_classe {
// Déclarations des données membres
var $Donnee_Membre_1;
var $Donnee_Membre_2;
var $...
// Déclarations des méthodes
function Nom_de_la_fonction_membre1(parametres) {
liste d'instructions;
}
}
Nom_de_la_classe représente bien évidemment le type d'objet désigné
par la classe ou du moins le nom que vous leur attribuez.
Contrairement aux langages orientés objet comme le C++, Php n'inclue pas dans sa version 3 de niveaux de visibilité des
éléments de la classe, il n'y a donc pas de concept d'encapsulation,
un des concepts majeurs de la programmation orientée objet.
|
Contrairement à la déclaration de classes en C++, la déclaration de la classe ne se finit pas par un point-virgule! |
Après avoir déclaré une classe, il faut instancier des objets pour pouvoir
l'exploiter. Cette opération se fait à l'aide du mot clé new permettant
de faire des objets découlant d'une classe. La syntaxe du mot clé new est la suivante:
$Nom_de_l_objet = new Nom_de_la_classe;
A partir du moment où l'objet est instancié, il possède des propriétés
qui lui sont propres, cela signifie que si vous instanciez un nouvel objet, la modification des
propriétés de l'un n'influera aucunement sur celles de l'autre.
Il existe une méthode spéciale (portant le même nom que la classe) s'exécutant automatiquement
lors de l'instanciation de l'objet. Cette méthode, appelée constructeur est très utile pour initialiser
les données membres lors de l'instanciation.
L'accès aux propriétés d'un objet se fait grâce au nom de l'objet, suivi d'une flêche (->) représentée par un moins (-)
et un signe supérieur (>), puis du nom de la donnée membre (sans le signe $).
Par exemple:
$Nom_de_l_objet->Nom_de_la_donnee_membre = Valeur;
L'accès aux méthodes d'un objet se fait comme pour l'accès aux propriétés,
c'est-à-dire par le nom de l'objet, suivi d'une flêche et du nom de la méthode.
La méthode est suivie de parenthèses, contenant les paramètres, si il y'en a.
L'accès à une méthode se fait donc de la façon suivante:
$Nom_de_l_objet->Nom_de_la_fonction_membre(parametre1,parametre2,...);
Le mot clé $this permet de désigner l'objet dans lequel on se trouve,
c'est-à-dire que lorsque l'on désire faire référence dans une
fonction membre à l'objet dans lequel elle se trouve, on utilise this.
Grâce à cette variable spéciale, il est possible dans une fonction membre de
faire référence aux propriétés situées dans le même l'objet
que la fonction membre.
Ainsi, lorsque l'on désire accéder à une propriété d'un objet
à partir d'une méthode du même objet, il suffit de faire précéder
le nom de la donnée membre par $this->. Par exemple:
class Toto{
var $age;
var $sexe;
var $adresse;
function DefineTotoAge($Age){
$this->age = $Age;
}
}
$toto_test = new Toto;
$toto_test->DefineTotoAge(10);
echo "L'age de TOTO : " . $toto_test->age . "<br/>";
PHP, dans sa version 3, reste assez limité du point de vue de la programmation objet.
La plupart des aspects marquants de la programmation objet ne sont pas présents dans le langage:
|