Le B.A. BA de la POO en PHP

, par Christophe


Définitions :
==============

## **Un objet :**
> Un « objet » est une représentation d’une chose matérielle ou immatérielle du réel à laquelle on associe des propriétés et des actions.
> exemple : **un véhicule** , une personne, un animal, un compte bancaire, ...

## **Une Classe :**
> contient la définition de l’objet que l’on va creer = c’est le plan de fabrication d’un objet

``` php
class Vehicule // Présence du mot-clé class suivi du nom de la classe.

// Déclaration des attributs et méthodes ici.

```

## **Les Attributs (variables) :**
> caractéristiques propres à un objet.
> exemple : nom, prénom, couleur, ...

``` php
class Vehicule

private $nombre_roues = 4 ; // nombre de roues du véhicule, par défaut = 4
private $couleur = ’vert’ ; // couleur du véhicule ;
private $nom ;

```

## **Les Methodes (fonctions) :**
> Des actions que l’on peut appliquer à un objet

``` php
class Vehicule

private $nombre_roues = 4 ; // nombre de roues du véhicule, par défaut = 4
private $couleur = ’vert’ ; // couleur du véhicule ;
private $nom ;
private $niveau_carburant = 100

public fonction klaxonner() // une méthode pour faire du bruit

echo "tut tut" ;


```

## **Instance de classe = résultat d’une instanciation = création d’un objet**
> exemple : un tricyle est crée à partir de l’objet **véhicule**

``` php
$tricyle = new Vehicule() ;

// initialisation des variables
$tricyle->nombre_roues = 3 ;
$tricyle->couleur = ’rouge’ ;
$tricyle->nom = ’velo_toto’ ;

// execution d’une fonction
$tricyle->klaxonner() ; // faire du bruit
```

## **function __construct()**
> Permet de sauvegarder les variables passées en argument lors de l’instanciation

``` php
class Vehicule
public nom ;

public function __construct($recup_nom = ’pas encore de nom’)
$this->nom = $recup_nom ;

$tricyle = new Vehicule("Mon_Super_Tricycle") ;
echo "le nom de mon tricyle = ".$tricycle->$nom ; // donnera la valeur : Mon_Super_Tricycle ;
```

## **Visibilite public / private / protected**

- **public**, permet d’indiquer que la propriété ou la méthode sera accessible à l’intérieur mais aussi à l’extérieur de la classe
- **private**, permet d’indiquer que la propriété ou la méthode sera accessible à l’intérieur de la classe seulement
- **protected**, permet d’indiquer que la propriété ou la méthode sera accessible à l’intérieur de la classe et des classes héritées

Quelques petites précisions :

- Si une propriété est déclarée en utilisant le mot clef **var**, elle sera définie comme publique
- Si une méthode est déclarée sans visibilitée, elle sera définie comme publique

## **Accéder à un attribut : l’accesseur ou getter**
> création de methodes qui ont comme seul role d’afficher un attribut private

``` php
class Vehicule
private nom ;

public function __construct($recup_nom = ’pas encore de nom’)
$this->nom = $recup_nom ;

public fonction getNom()
return $this->nom ;

$tricyle = new Vehicule("Mon_Super_Tricycle") ;
echo $tricycle->nom ; // Error, $nom => private
echo $tricylce->getNom() ; // affiche : Mon_Super_Tricycle ;

```

## **Modifier un attribut : mutateur ou setter**
> création de methode qui ont comme seul role de modifier un attribut private d’un objet

``` php
class Vehicule
private nom ;
private roues = 4 ;

public function __construct($recup_nom = ’pas encore de nom’)
$this->nom = $recup_nom ;

public fonction getRoues()
return $this->roues ;

public function setRoues($nombre_roues)
if(is_int($nombre_roues) && $nombre_roues > 0 && $nombre_roues < 10)
$this->roues = $nombre_roues ;

else
trigger_error(’Le nombre de roue est invalide’, E_USER_WARNING) ;


$tricycle = new Vehicule("Mon_Super_Tricycle") ;
$tricycle->setRoues(3) ;
echo $tricycle->getRoues ; // affiche 3

$tricycle->setRoues(11) ;
echo $tricycle->getRoues ; // Warning : le nombre de roues est invalide

```

## **Exemple complet**

Licence Creative Commons Cet article est mise à disposition selon les termes de la Licence Creative Commons Attribution - Partage dans les Mêmes Conditions 4.0 International.