Etendre une classe en PHP 7

Dans ce cours voyons l’un des principe fondammental de PHP orienté objet. Etendre une classe en PHP. Lorsqu’on étend une classe en PHP, celle ci hérite de toutes ses propriétés et méthodes publiques et protégées tant qu’elles ne sont pas écrasées.

L’avanage d’extension de classe est la modularité de code, permettant de réutiliser facilement le code, de le modifier, de l’etendre comme nous le souhaitons. Egalement de garder une classe mère qui reste inchangeable. Cela permet d’utiliser cette classe dans un grand nombre de projets et il suffira d’étendre cette classe pour la modifier et lui ajouter ce que l’on veut. Cela permet de mettre à jour le code, de voir loin, de ne pas supprimer, modifier trop de chose, et de réinventer la roue à chaque projet ! C’est aussi un gain de performance, de temps et d’argent !

Maintenant voyons comment utiliser la classe Extend en PHP, créons d’abord notre classe parent ( mère ) puis son extension.

Personnage .php

<?php

class Personnage
{
  // Les Propriétés, ici nous avons 3 propriétés, nous pouvons ajouter une infinité de propriétés
  public $nom;
  public $level;
  public $vie;

  // Les Methodes
  public function getNiveau(): string {
    return $this->level;
  }

  public function setNiveau(int $level) {
    $this->level = $level;
    return $this;
  }

  public function getNom(): string {
    return $this->nom;
  }

  public function setNom(string $nom) {
    $this->nom = $nom;
    return $this;
  }

  public function getVie(): string {
    return $this->vie;
  }

  function setVie($vie) {
    $this->vie = $vie;
  }

  // Mes fonctions
  public function Attaque() {
      // Formule de dégats attaque = level * 10
      $degats = $this->getNiveau() * 10;

      echo 'Attaque : ' . $degats . ' de dommages ';
    }
    
  public function SupperAttaque(){
      return $attaque = $this->getLevel() * 10;
    }
}

$demon = new Personnage();

$demon->setNom('Luffy'); // je lui attribu un nom à mon personnage
$demon->setNiveau(10);  // Il sera niveau 10
$demon->setVie(100);  // Il aura une base de 100 points de vie 

echo 'Points de vie : '.$demon->getVie();
echo '<br />';
$demon->Attaque(); // je lance mon attaque

?>

Race.php

<?php
require_once 'Personnage.php';

class Race extends Personnage
{
  // Les Propriétés, ici nous avons 3 propriétés, nous pouvons ajouter une infinité de propriétés
  public $race;
  public $force;
  public $agilite;

  // Les Methodes
  public function getRace(): string {
    return $this->race;
  }

  public function setRace(string $race) {
    $this->race = $race;
    return $this;
  }

  public function getForce(): string {
    return $this->force;
  }

  public function setForce(string $force) {
    $this->force = $force;
    return $this;
  }

  public function getAgilite(): string {
    return $this->agilite;
  }

  function setAgilite($agilite) {
    $this->agilite = $agilite;
  }

  function getAttaque(){

         return parent::Attaque();
         
     }

}

$demon = new Race();

$demon->setNom('Luffy'); // je lui attribu un nom à mon personnage
$demon->setNiveau(10);  // Il sera niveau 10
$demon->setVie(100);  // Il aura une base de 100 points de vie 
$demon->setRace("Human"); 
$demon->setForce(150); 
$demon->setAgilite(150); 

echo 'Race : '.$demon->getNom().'<br />';
echo 'Race : '.$demon->getRace().'<br />';
echo 'Points de vie : '.$demon->getVie().'<br />';
echo 'Attaque sur le monstre : '.$demon->getAttaque().' dégâts'; // je lance mon attaque

?>