POO php la base

Qu’es ce que la POO?

La programmation objet est la représentation d’un objet, d’un concept du monde réel en code, c’est se que l’on appel plus communément un paradigme objet.

Prenons en cas concret un stylo, il possède des propriétés: une taille, une couleur, un type (plume, bic, crayon…), une marque et l’on pourrait lui définir encore beaucoup de propriétés.
Puis notre stylo peux avoir des actions, ou des états (écrire, être boucher, changer de couleur…).
En PHP comme dans beaucoup d’autres langages pour créer un objet il faut d’abord le déclarer et le décrire ainsi la description de notre objet est défini grâce au préfixe class.
Notre class n’est pas notre objet a proprement dit.
Pour utiliser un objet, il faut l’instancier, c’est à dire créer une variable qui fera appel notre class (à la description de notre objet).
Une class ne peut pas être manipuler directement rappeler vous une class est une description de manière plus imagé, une class est un moule dans lequel vous pouvez faire vos objets vos gateaux (aux yahourts, aux chocolats).

Un cas concret parle souvent mieux, reprenons la définition de notre stylo

// Dans les bonnes pratique en PHP la première lettre de la classe est en Majuscule.
class Stylo{
// déclaration des propriété d’un stylo
private $couleur;
private $taille;
private $marque;
/* les autre propriété que vous souhaiter */

//Déclaration de méthode (action) d’un stylo en php les bonnes pratiques est d’écrire les propriété et méthode en camelCase
public function getCouleur(){return $this->couleur;};
public function ecrire($message){echo $message;};
}

// Instanciation de plusieurs objets stylo
$bic = new Stylo();
$plume = new Stylo();
var_dump($bic);
var_dump($plume);
// $bic et $plume sont des variables objet.

Les attributs de class

Vous avez peu être remarqué que dans ma class Stylo j’ai déclaré des propriétés (attributs) de type privé et des méthodes de type public et vous vous demandez surement à quoi cela correspond.
Ils s’agit du niveau d’accessibilité de votre variable ou méthode, il existe trois niveaux d’accessibilités à savoir:

  • public
  • protected
  • private

Public

L’attribut « public » permet d’accéder à la propriété en dehors et dans la class. si nous reprenons notre exemple notre objet $bic peux accéder aux méthodes ecrire et getCouleur avec la syntaxe suivante

$bic->getCouleur(); // si vous le tester vous aurez une erreur car nous n’avons pas défini de couleur vous aurez alors une exception PHP.
$bic->ecrire(‘bonjour!’); // marche et

Protected

L’attribut protected est un peu spécial nous reviendrons dessus lorsque nous parlerons d’héritage. Il s’agit d’un attribut qui ne pourra être accessible par des classes enfants, il ne sera pas accessible hors des classes ayant le droit de le manipuler.

Private

Les méthodes et les propriétés ne sont accessibles que dans la classe.
Noter que les propriétés sont généralement pour ne pas dire toujours de type privé, l’accès aux propriétés doit se faire à l’aide de « setter » et « getter« , nous allons continuer à implémenter notre exemple.

Les Méthodes de class

Les méthodes de class représentent les actions et les états de votre objet.
Il existe des méthodes dite magique mais nous verrons ca dans un prochain chapitre.
Nous allons implémenter notre class avec les

Setter
Méthode qui permet d’affecter ou de changer la valeur d’un attribut.
Getter
Méthode qui permet d’accéder à la valeur d’un attribut

class Stylo{

private $couleur;
private $taille;
private $marque;

public function getCouleur(){return $this->couleur;};
public function setCouleur($couleur){
$this->couleur = $couleur;
}
public function getTaille() /*: int */
{
return $this->taille;
}
public function setTaille(int $taille)
{
$this->taille = $taille;
}
public function getMarque()/* 😕 Marque */
{
return $this->marque;
}
public function setMarque(Marque $marque)
{
$this->marque = $marque;
}
public function ecrire($message){
if(isset($this->couleur)){
echo ‘ Publié le Catégories PHP

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *