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
1. Marielle le 03-10-2006 à 13:28:06 (site)
Oh, un article pour geeks, sympa !
Ca me manque la programmation, je n'en ai pas faite depuis juin, et je n'en ferai plus jamais dans le cadre professionnel
Sinon, je ne savais pas qu'on pouvait faire de la POO (programmation orientée objet) en PHP, j'essaierai.
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
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 )