Outils pour utilisateurs

Outils du site


informatique:programmation:php:poo

Ceci est une ancienne révision du document !


PHP Programmation Objet

#













#

Création d'une classe et création d'objets

<sxh php> <?php

class MaClasse
{
  //Une classe est contituée
  
  //D'attribut contenant des valeurs
  private attribut1; //Valeur privée non accessible de l'extérieur
  public attribut2; //Valeur public accessible de l'extérieur (utilisation non recommandée
  
  //De methode contenant des instructions imbriquées dans des fonctions
  public function methode1;
  {
  }
  public function methode2;
  {
  }
}

//Pour créer les objet $truc1 et $truc2 avec la classe MaClasse
$truc1 = new MaClasse;
$truc2 = new MaClasse;

?>

</sxh>

Pour résumer

  • L'attribut : fait référence à des données
  • La méthode : fait référence à un traitement
  • Une classe est un “moule” qui permet de fabriquer un objet

L'accès aux attributs et méthodes

Création et utilisation d'une classe : <sxh php>

<?php
class MaClasse
{
  private $var1;
  public $var2 = 'publique'; //Attribut avec valeur prédéfinie
  private $var3 = 'coucou'; //Attribut avec valeur prédéfinie
  private $var4 = 'hello'; //Attribut avec valeur prédéfinie
  
  public function methode1 ()
  {
    //$this fait référence à : "moi l'objet" je veux ma valeur de $var3
    //Cette instruction affichera "coucou".
    echo $this->var3;
  }
  
  public function methode2 ()
  {
    //"moi l'objet" retourne moi ma valeur de $var4
    //Cette instruction retournera "hello"
    return $this->var4;
  }
}
// Création de l'objet "$truc"
$truc = new MaClasse();

// Exemple d'affichage attribut public dans la classe (non recommandé), les attributs privé ne peuvent pas être affichés.
// "Moi l'objet $truc" je veux la valeur de mon attribut public $var2: "publique" sera affiché
echo $truc->var2;
echo "\n"; //Retour chariot en ligne de commande

// "Moi l'objet $truc" j'exécute ma méthode "methode1": Cette instruction affiche "coucou".
$truc->methode1();
echo "\n";

// "Moi l'objet $truc" j'exécute ma méthode "methode2". Rien ne sera affiché puisque return n'affiche rien (return utilisé au lieu de echo)
$truc->methode2();

// “Moi l'objet $truc” je veux qu'on m'affiche le résultat de la “methode2” que j'exécute : Cette instruction affichera “hello”.

echo $truc->methode2();
echo "\n";
?>

</sxh>

Résultat attendu :

publique
coucou
hello

Pour résumer

  • $this : fait référence à moi l'objet je veux (→) utiliser cette methode : $this→methode()
  • La bonne pratique est de n'avoir jamais recours aux attributs “public”.
  • Les valeurs des attributs privés peuvent être affichés via des méthodes.

Le constructeur

Le contructeur est une fonction qui permet de définir les valeurs des attributs que l'on souhaite donner à l'objet que l'on crée <sxh php>

<?php
class MaClasse
{
  private $var1;
  private $var2;
  
  //Constructeur permettant de définir les valeurs des attribut de l'objet que l'on cré
  public function __construct ($valeur1, $valeur2)
  {
    $this->var1 = $valeur1;
    $this->var2 = $valeur2;
  }
  
  //Cette fonction affichera les valeurs que l'on a défini en créant notre objet
  public function affiche_valeurs()
  {
    echo $this->var1;
    echo "\n";
    echo $this->var2;
    echo "\n";
  }
}
$truc = new MaClasse('coucou', 33);
$truc->affiche_valeurs();

$machin = new MaClasse('hello', 22);
$machin->affiche_valeurs();

?>

</sxh>

Résultat attendu :

coucou
33
hello
22

Pour résumer

  • Le constructeur est la fonction qui permet de définir les caractéristiques de notre objet.
  • Il ne peut y avoir qu'un seul constructeur dans une classe

Interaction entre les objets

<sxh php;> <?php class MaClasse {

private $var1;
public function __construct ($valeur1)
{
  $this->var1 = $valeur1;
}
public function affiche_ma_valeur1 ()
{
  echo $this->var1;
  echo "\n";
}
public function affiche_la_valeur1 (MaClasse $objet)
{
  echo $objet->var1;
  echo "\n";
}

}

// On crée les 2 objets en leur donner les valeurs pour les contruires $truc1 = new MaClasse (11); $truc2 = new MaClasse (22);

// On affiche la valeur1 de chaque objet $truc1→affiche_ma_valeur1(); $truc2→affiche_ma_valeur1();

// On demande à l'objet $truc1 de sortir la valeur1 de l'objet $truc2 $truc1→affiche_la_valeur1($truc2); ?> </sxh>

Résultat attendu :

11
22
22

Constantes

Les constantes sont des variables qui appartiennent à la classe et non à l'objet. Ce sont ds variable prédéfinie dans l'objet et qui ne changent pas.

<sxh php> <?php class MaClasse {

private $var1;
const VAR_PREDEFINIE1 = 11;
const VAR_PREDEFINIE2 = 22;
public function __construct ($valeur1)
{
  $this->var1 = $valeur1;
}
public function affiche_ma_valeur1 ()
{
  echo $this->var1;
  echo "\n";
}
public function affiche_la_valeur1 (MaClasse $objet)
{
  echo $objet->var1;
  echo "\n";
}

}

// On crée les 2 objets en leur donner les valeurs prédéfinies par la classe $truc1 = new MaClasse (MaClasse::VAR_PREDEFINIE1); $truc2 = new MaClasse (MaClasse::VAR_PREDEFINIE2);

// On affiche la valeur1 de chaque objet $truc1→affiche_ma_valeur1(); $truc2→affiche_ma_valeur1();

// On demande à l'objet $truc1 de sortir la valeur1 de l'objet $truc2 $truc1→affiche_la_valeur1($truc2); ?> </sxh>

Résultat attendu :

11
22
22

Methode et attributs statiques

Méthode statique

<sxh php> <?php class MaClasse {

private $var = 'toto';
public static function good_static()
{
  echo "Hello\n";
}
public static function bad_static()
{
  //Ceci est un mauvais exemple
  //Dans un context de methode static, $this qui fait référence à un objet qui n'a rien à faire là
  $this->var;
}

}

// Ci-dessous la methode good_static de la classe est exécutée. Elle ne necessite pas la création d'un objet MaClasse::good_static();

// Ci-dessous on aura une erreur, puisque le $this défini dans la fonction faite référence à un objet qui n'existe pas MaClasse::bad_static();

?> </sxh>

Résultat attendu :

Hello
PHP Fatal error:  Using $this when not in object context in /var/www/test-php/test/static.php on line 15

Attributs statiques

<sxh php> <?php class MaClasse {

// Déclaration de la variable $compteur
// Cette variable n'est utilisable par aucun objet
private static $compteur = 0;
public function __construct()
{
  // On instancie la variable $compteur qui appartient à la classe (donc utilisation du mot-clé self)
  // Ici le constructeur incrémente $compteur chaque fois qu'il construit un objet
  self::$compteur++;
}
public static function getCompteur() // Méthode statique qui renverra la valeur du compteur
{
  //Attention de bien définir le $ devant l'attribut
  return self::$compteur;
}

}

$test1 = new MaClasse; $test2 = new MaClasse; $test3 = new MaClasse;

// Ceci permet de savoir combien d'objets ont été construit avec MaClasse echo MaClasse::getCompteur(); echo “\n”; ?> </sxh>

Résultat attendu :

3

Pour résumer

  • L'opérateur → : cet opérateur permet d'accéder à un élément de tel objet
  • L'opérateur :: : cet opérateur permet d'accéder à un élément de telle classe
informatique/programmation/php/poo.1318995375.txt.gz · Dernière modification : (modification externe)