gribouillé 02-10-2006 à 23:43:28

Pourquoi utiliser les classes en PHP

Cet article répond à une question : quel est l'intéret d'utiliser la programmation objet en php, c'est à dire de définir des classes.

1. Qu'est-ce qu'une classe en PHP ?

Tout d'abord un petit rappel pour que le public puisse suivre.

Une classe est la définition d'un type d'objets, c'est à dire une variable qui contient d'autres  variables, pour lequel - en plus - on définit des fonctions qui lui seront reservées.

Exemple :
Un objet peut être par exemple nommé $pizza, et contenir plusieurs variables :
 $pizza->prix
 $pizza->nb_anchois
 $pizza->taille

ce qui quasiment au même que d'utiliser des tableaux, en plus simple :
 $pizza['prix']
 $pizza['nb_anchois']
 $pizza['taille']

Si on a définit une classe 'pizza', on peut aussi appliquer des fonctions directement à l'objet, et plus seulement des variables :
 $pizza->calcule_poids()

en ayant défini par exemple :

class classe_pizza {
    var $nb_anchois;
    var $prix;
    function calcule_poids()
    {
       return $this->nb_anchois * 10;
    }
}
$pizza = new classe_pizza();

A l'intérieur d'une classe, la variable bien pratique "$this" désigne l'objet lui même par lequel on appelle la fonction.

2. Peut-on faire des choses qu'on ne peut pas faire autrement ?

Non, sauf en php 5 où nous pouvons avoir des variables cachées de l'exterieur de la classe, mais bon. Techniquement, on pouvait s'en sortir avant avec une fonction appelée avec un pointeur comme argument :

 function pizza_calcule_poids($p)
 {
    return $p->nb_anchois * 10;
 }

 $poids = pizza_calcule_poids(&$pizza);

L'utilisation du caractère "&" permet d'envoyer le pointeur et non une copie de la variable, et autorise donc une modification par la fonction d'un élément de l'argument.

Même si on veut que le poids soit stocké dans la variable $pizza->poids, on peut le faire des deux manières :
1. Avec les classes
 
class classe_pizza {
    var $nb_anchois;
    var $prix;
    function calcule_poids()
    {
       $this->poids = $this->nb_anchois * 10;
    }
}
$pizza = new classe_pizza();
$pizza->nb_anchois=3;
$pizza->calcule_poids();

2. Une fonction normale et un pointeur

function pizza_calcule_poids($p)
{
    $p->poids=$p->nb_anchois * 10;
}
$pizza->nb_anchois=3;
pizza_calcule_poids(&$pizza);

Dans l'exemple précédent, si on oublie le "&" devant l'argument, l'appel à la fonction ne servira à rien.

3. Quel est l'intéret des classes alors ?

1. Une programmation plus propre et plus sympa

Avec les classes, on définit un ensemble de fonctions à un type d'objet. On ne risque pas de confondre et d'envoyer la fonction avec une mauvaise variable comme argument.
Dans le code, les fonctions sont regroupées, et souvent dans un fichier include séparé ; le code est alors mieux organisé et plus facile à retravailler. Si on doit changer quelque chose, le changement ne concernera que la classe en question et sa programmation peut être indépendante du reste.
Comme la programmation est mieux organisée, elle est aussi plus agréable et plus lisible.

2. Souplesse dans le nom des fonctions

Avec les classe, on peut avoir des fonctions qui portent le même nom, tant qu'elles agissent dans des classes différentes. On ne sera pas obligé d'utiliser des noms comme
pizza_calcule_poids()
salade_calcule_poids()

mais seulement des fonctions calcule_poids() à l'intérieur des deux classes distinctes.

Ce qui apparait comme une souplesse supplémentaire, devient un vrai plus quand il s'agit de programmer des fichiers includes utilisables par de nombreux sites, comme la classe de vérification html utilisée par vefblog.
Car en n'utilisant pas les classes, on court toujours un risque de prendre un nom de fonction que le développeur du site voudra utiliser pour lui, ce qui provoquera une erreur php.

3. Le plus de la variable $this

L'utilisation à l'intérieur d'une classe, de la variable $this, permet de modifier des propriétés de l'objet à l'intérieur de la fonction. La seule façon d'imiter cela est d'utiliser le passage de pointeurs, ce qui peut s'avérer vite contraignant et moins agréable à développer.

Conclusion

Utilisez les classes en php, c'est super sympa !

 


Réactions

bas    terminé   fermer
 

1. Marielle  le 03-10-2006 à 13:28:06  (site)

Oh, un article pour geeks, sympa ! Sourire
Ca me manque la programmation, je n'en ai pas faite depuis juin, et je n'en ferai plus jamais dans le cadre professionnel Ouin

Sinon, je ne savais pas qu'on pouvait faire de la POO (programmation orientée objet) en PHP, j'essaierai. Clin doeil

2. nine  le 21-10-2006 à 20:20:15

tu sais je comprends rien à ton blog...

3. legolas  le 23-10-2006 à 11:06:29  (site)

A mon blog en général, ou à cet article en particulier ?

4. nine  le 26-10-2006 à 12:51:14

pfouuuuuuuuuuuu chais pa Ouin

5. Legolas  le 26-10-2006 à 13:14:29

????? tu sais pas ce que tu comprend pas ?

6. nine  le 26-10-2006 à 18:08:00

si je comprends
c cet article que je comprends pas et plein d'autres
dc un p'tit peu ton blog en fait...
mais fo pas que tu sois véxé hein c'est pas bien grave ce que je te dis là (et t'as qu'a me dire que si je suis pas contente g qu'à fr un blog moi aussi et là tu aurais raison )

haut    terminé   fermer
 
 
 
 
 

Ajouter un commentaire

- Commentaires seulement à propos de l'article svp.
- Les commentaires sont modérés, ils ne seront pas immédiats.

Merci de laisser une petite trace sur mon blog !
Pseudo : Réserve ton pseudo ici
Email :
Site :
Commentaire :

Smileys

 
 
 
Rappel article
 
 
Un blog comme les autres..