Le langage de programmation PHP permet de créer des sites internet dynamiques. Avec les bases de PHP, on peut créer des premières pages, demander des informations via un formulaire, mais comment gérer des informations plus complexes sans rendre le code lui complexe. C’est là qu’intervient les Classes PHP. Comment s’en servir efficacement et en mode 20/80, je vous dis tout dans cet article !

Note : Cet article fait partie d’une série sur : Comment PHP en mode 20/80. Si vous n’avez pas encore d’expérience en PHP, vous devez avoir lu ces articles avant de continuer :

  1. Comment utiliser PHP pour dynamiser une page HTML ?
  2. Comment créer un formulaire HTML pour traiter des informations avec PHP ?

Prêt ? Let’s go !!

Qu’est-ce que le développement orienté “Objets” ?

Avant d’aller plus loin, il faut savoir qu’il existe deux types de programmation  :

  • Procédurale
    Celle ci consiste à donner des instructions les une après les autres. C qui a l’avantage d’être plus rapide pour les petits programmes. Mais celui-ci à le désavantage de rapidement devenir compliqué.
  • Orientée objets
    Celui-ci consiste à décrire dans le programme des objets comme nous le faisons dans la vrai vie comme : une voiture, un utilisateur, un formulaire, etc. Chaque objet contient alors ses propres informations et ses propres instructions. Cela a l’avantage d’être beaucoup plus clair et efficace. Mais, cela a le désavantage de prendre un plus de temps à écrire au début.

Malgré des avantages et inconvénients pour chacun des types, la programmation orienté objet prend le dessus pour la simplicité qu’il permet dans des programme devenant jour après jours plus complets et complexes. C’est la raison pour laquelle ce type de programmation fait partie des connaissance 20/80 à apprendre.

Avec PHP, nous avons de la chance, car il sait se servir des objets, ce qui sera d’une aide incommensurable pour la création d’un site.

Comment utiliser un objet en PHP avec les classes

Afin de créer un objet en PHP , on se sert du mot clé “class” suivi du nom de la classe, puis une accolade ouvrante { et une accolade fermante } pour dire qu’on a terminé de décrire l’objet.

Voici le format que cela prend :

/* Ma classe : celle-ci permet de faire de chose :) */
class NomDeMaClasse {
}

Partons d’un exemple avec une voiture. Cela donne en php :

/* MaVoiture : celle-ci permet de me deplacer */
class Voiture {
}

Maintenant que nous avons défini ce qu’est une “Voiture”, nous allons pouvoir demander à PHP de nous créer une voiture. Pour cela, nous faut utiliser le mot clé “new” qui demande la construction d’un objet, suivi de l’objet. Cela s’appelle l’instanciation. La variable s’appelle à la suite de cette action s’appelle une instance;

Cela se fait de la manière suivante :

/* MaVoiture : celle-ci permet de me deplacer */
class Voiture {
}

/* Creation de ma nouvelle voiture ! */
$maVoiture = new Voiture();

Ici, maVoiture est une instance de la classe Voiture.

Ajouter des informations à mon objet avec les attributs

Maintenant, nous souhaitons ajouter des informations supplémentaires. Comment dire que notre voiture est bleu, qu’elle est de marque Toyota ? Eh bien, ce qui est pratique, c’est qu’une classe peut contenir ses propres informations (des attributs). Nous pouvons les définir de la manière suivante :

<?php

/* MaVoiture : celle-ci permet de me deplacer avec style */
class Voiture {
/* La couleur de ma voiture */
public $couleur = "bleu";
/* La marque de ma voiture */
public $marque = "Toyota";
}

$maVoiture = new Voiture();

echo "Ma voiture est " . $maVoiture->couleur . " et de marque " . $maVoiture->marque . "<br />";

/* Je souhaite changer la couleur de ma voiture en rouge */
$maVoiture->couleur = "rouge";
echo "Ma voiture est " . $maVoiture->couleur . " et de marque " . $maVoiture->marque . "<br />";
?>

Ce qui nous donne :

Classe voiture

Définir des comportement à l’objet avec les méthodes

C’est maintenant que les Classes prennent leur utilité, avec les Méthodes. Comme vous le savez, il est possible en PHP de définir des fonctions. Et bien une méthode est une fonction liée à un objet. Par exemple, au lieu d’écrire :

<?php
class Voiture {
public $couleur = "rouge";
public $marque = "Toyota";
}

/* Fonction permettant de demarrer une voiture */
function demarrerVoiture($voiture) {
echo "Demarrage de la voiture " . $voiture->couleur;
}

$voiture = new Voiture();
demarrerVoiture($voiture);
?>

Nous allons pouvoir écrire :

<?php
class Voiture {
public $couleur = "rouge";
public $marque = "Toyota";

function demarrer() {
echo "Demarrage de la voiture " . $this->couleur;
}
}

$voiture = new Voiture();
$voiture->demarrer();
?>

Cela peut paraitre identique pour cette exemple simple, mais cela prend tout son sens lorsque l’on commencer à jouer avec plus d’une dizaine d’objets à la fois. Si nous plaçons des fonctions partout pour gérer des objets, cela devient rapidement le bazar. Alors que si chaque objet se concentre sur sa propre logique, leur utilisation devient beaucoup plus simple.

Demander à l’objet de faire une action lorsqu’on le crée/supprimer

Pour finir sur les aspects intéressants des objet, passant au constructeut et au detructeur d’un objet. Ces deux méthodes permettent d’effectuer des actions lors de la construction de l’objet et sa destruction (comme leur nom l’indique).

<?php
class Voiture {
public $couleur = "rouge";
public $marque = "Toyota";

/* Action a faire lorsque j'instancie une voiture */
function __construct() {
echo "La voiture est prte !<br />";
}

/*Action a faire lorsque l'instance de ma voiture est detruite */
function __destruct() {
echo "La voiture est dans le garare !<br />";
}

function demarrer() {
echo "Demarrage de la voiture " . $this->couleur . "<br />";
}
}

$voiture = new Voiture();
$voiture->demarrer();

/* On arrive  la fin du programme, les classes creees seront detruites */
?>

PHP Constructeur

Ce qu’il faut retenir en mode 20/80

Les classes sont extrêmement importantes pour rendre un code beaucoup plus complet sans rendre le code complexe.

Avez-vous aimez cet article. Dites le moi dans les commentaires.

  •  
  •  
  •  
  •  
  • 1
  •  
  •  
  •