Le PHP objet§

1

L'objet§

2

Classes et objets§

Les objets sont des structures de données contenant des variables (appelées attributs) et des fonctions (appelées méthodes).

Les classes sont la définition, le modèle, le "moule" qui permet de fabriquer des objets.

3

Pourquoi le PHP objet§

4

Syntaxe de classe basique§

Mot clé : class

<?php
class Personne
{
}
?>
5

Propriété, méthodes et constructeur§

6

Instances (objets)§

<?php
class Personne
{
    ...
}

$tom = new Personne('Tom', 'Doyen');
$tom->sePresenter();
?>
7

Méthodes magiques§

8

Héritage§

Définit un cas particulier d'une classe. Par exemple, un Etudiant est une Personne, avec des choses en plus.

<?php
class Personne
{
    ...
}
class Etudiant extends Personne // Un Etudiant est un cas particulier de Personne
{
    private $_num_etudiant; // qui a en plus un numéro étudiant

    public function __construct($prenom, $nom, $num_etudiant)
    {
        parent::__construct($prenom, $nom); // appel du constructeur de la classe Personne
        $this->_num_etudiant = $num_etudiant; // puis initialisation des attributs spécifiques
    }

    public function sePresenter() // redéfinit la méthode de la classe Personne
    {
        parent::sePresenter(); // appel de la méthode de la classe Personne (sans cette ligne la redéfinition est totale)
        echo 'Et mon numéro étudiant est '.$this->_num_etudiant;
    }
}
?>
9

Contrainte de typage§

10

Méthode statiques§

<?php
class a
{
  public static function parler()
  {
    echo 'Hello World';
  }
}

a::parler();
?>
11

Attributs statiques§

<?php
class a
{
  private static $compteur = 0;
  private $mon_numero;

  public function __construct()
  {
      self::$compteur++;
      $this->mon_numero = self::$compteur;
  }

  public static function parler()
  {
    echo 'Je suis le '.$this->mon_numero.'eme (sur '.self::$compteur.' au total)';
  }
}
?>
12

Classes et méthodes abstraites§

<?php
abstract class Vehicule
{
    private $numeroDeSerie;
    public function getNumeroDeSerie() { return $this->numeroDeSerie; }
    public abstract function seDeplacer();
}
class Voiture extends Vehicule
{
    private ...
    public function seDeplacer()
    {
        $this->pedaleAccelerateur->appuyer();
    }
}
class Moto extends Vehicule
{
    private ...
    public function seDeplacer()
    {
        $this->poignee->tourner();
    }
}
?>

À quoi ça sert ?

13

Interfaces§

<?php
interface SaitParler
{
  public function parler();
}

class Personne implements SaitParler
{
  public function parler()
  {
    echo 'Hello World';
  }
}

class Robot implements SaitParler
{
  public function parler()
  {
    echo '10100110100';
  }
}
?>

À quoi ça sert ?

14

Exercice§

15