« PHP objet » : différence entre les versions

De NCad Wiki
Aller à la navigation Aller à la recherche
Aucun résumé des modifications
Aucun résumé des modifications
 
(34 versions intermédiaires par 2 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
[par jullule] a completer
Cet article/mémo rassemble les principales commandes de la programmation objet en PHP.


Cet article va rasembler les principales commande de la programmation objet en PHP. Il s'agit d'un mémo et non d'un tutoriel.
==La notion d'objet==
 
En objet, on crée des classes (moule) qui servent à faire des objets. Une classe (moule) peut servir à faire autant d'objets que l'on veut.<br />
Ces classes (moules) il faut les définir, pour cela, on va leur attribuer des attributs (variables) et des méthodes (fonction)
 
==Créer une classe==


Nous utilisons l'exemple d'un bateau
<?php
class Bateau
{
  private $_carburant;  <span style="color:green;">// quantitée de carburant</span>
  private $_localisation;  <span style="color:green;">// sa localisation</span>
  private $_fret;  <span style="color:green;">// le nombre de marchandises dans la cale</span>
  private $_couleur;  <span style="color:green;">// la couleur du bateau</span>
  public function setfioul() <span style="color:green;">// methode pour remplir ou vider le reservoir (de x litres)</span>
  {
  }
       
  public function deplacer() <span style="color:green;">//méthode pour deplacer la bateau</span>
  {
  }
       
  public function charger() <span style="color:green;">// méthode pour charger la cale (de x marchandise)</span>
  {
  }
  public function decharger() <span style="color:green;">// méthode pour vider la cale (de x marchandise)</span>
  {
  }
  public function setCouleur() <span style="color:green;">// méthode pour vider la cale (de x marchandise)</span>
  {
  }
}
?>
===Définir une méthode===
voici une méthode que nous définissons, on la placera dans la classe bateau
public function direCoucou()
{
  echo 'Coucou !';
}
==Créer un objet==
Un objet est donc ce qui utilise la classe pour se définir.
  $surcouf = new bateau(); <span style="color:green;"> //$surcouf est un objet de type bateau.</span>
===Appeler une méthode de l'objet===
pour appeler une méthode, il faut déjà avoir créé l'objet, sinon ça marche moins bien.<br />
$surcouf->direCoucou();
ici, on appelle la méthode direCoucou de $surcouf, cette méthode affiche "Coucou !" a l'écran. c'est sur ce n'est pas très utile, mais on voit le principe.
===Accéder aux attribut===
Les attributs ne peuvent pas être lus ou modifier directement (ils sont privé). C'est contraignant, mais ça les protège de nos bêtises.<br />
Donc si on fait ça: $surcouf->_fret = $surcouf->_fret + 200; &emsp; ça ne marche pas. Il faut passer par des méthodes


==La notion d'objet==


En objet on crée des classes (moule) qui servent a faire des objets. Une classe (moule) peut servir a faire autan d'objet que l'on veut.<br />
====Accesseur (lire un attribut)====
Ces classes (moules) il faut les definir, pour cela on va leur attribuer des attributs (variables) et des methodes (fonction)


pour lire un attribut, on crée une méthode de type accesseur en la nommant du nom de l'attribut qu'elle renvoi. Ce n'est pas obligatoire, c'est une convention. Le principale est que se soit clair et compréhensible par soi et par les autres


public function carburant()
{
    return $this->_carburant;  <span style="color:green;"> //renvoi $_carburant.</span>
}
pour utiliser cette méthode
  $variable = surcouf.carburant(); <span style="color:green;"> //recupere dans une variable l'attribut $_carburant de surcouf</span>


==Créer une classe==
====Mutateur (modifier un attribut)====


Nous utilison l'exemple d'un bateau
pour modifier un attribut, on crée une méthode de type mutateur en mettant "set" dans son nom. C'est une convention également.


<?php
public function setFioul($fioul)
class bateau <br />
{
{
    $_carburant = $fioul; <span style="color:green;"> //l'attribut $_carburant = l'argument $fioul.</span>
: private $_carburant; <span style="color:green;">// quantitée de carburant</span>
  }
: private $_localisation;  <span style="color:green;">// sa localisation</span>
pour utiliser cette méthode
: private $_fret; <span style="color:green;">// le nombre de marchandises dans la cale</span>
  surcouf.carburant(1500); <span style="color:green;"> //met la valeur $_carburant a 1500 </span>
: private $_couleur; <span style="color:green;">// la couleur du bateau</span>


: public function fioul() <span style="color:green;">// methode pour remplir ou vider le reservoir (de x litres)</span>
====Constructeur (definir l'état quand on crée l'objet)====
:  {
:
:  }
:       
:  public function deplacer() <span style="color:green;">//méthode pour deplacer la bateau</span>
:  {
:
:  }
:       
:  public function charger() <span style="color:green;">// méthode pour charger la cale (de x marchandise)</span>
:  {
:
:  }
:
:  public function decharger() <span style="color:green;">// méthode pour vider la cale (de x marchandise)</span>
:  {
:
:  }
:  public function couleur() <span style="color:green;">// méthode pour vider la cale (de x marchandise)</span>
:  {
:
:  }
}
?>


Le constructeur est une méthode qui définit l'état des attributs quand on crée l'objet. Dès qu'on crée un objet, cette méthode est appelée.<br />
On est obligé de l'appeler __construct (avec deux _)


public function __construct($fioul, $couleur)
{
    echo"bateau crée";
    $this->setFioul($fioul); <span style="color:green;"> //initialise le carburant avec la valeur de l'argument $fioul par la méthode setFioul()    </span>
    $this->setCouleur($couleur);
}
Ici, on passe deux paramètres au constructeur qui va faire l'action selon notre code.


===Definir une methode===
public function __construct($couleur)
{
    echo"bateau crée mais il n'y a que la couleur qui change";
    $this->setCouleur($couleur);
}


voici une methode que nous definissons, on la placeras dans la classe bateau
si on fait
$surcouf2 = new Bateau(bleu);
          <span style="color:green;">//ou bien</span>
$surcouf3 = new Bateau(1000, bleu);
Pour surcouf2, c'est le deuxième constructeur (à 1 argument) qui sera appelé. Pour surcouf3, c'est le premier (à 2 arguments)


public function direCoucou()<br />
==Inclure des classes==
{
:  echo 'Coucou !';
}


Les classes sont dans des fichiers séparés du code à proprement dit, sinon on aurait vite de longues pages.
Pour les utiliser, il faut déjà dire quel fichier doit être chargé.


==Créer un objet==
require 'bateau.php';  <span style="color:green;">//La classe bateau qui est dans le fichier bateau.php est incluse</span>


Un objet est donc ce qui utilise la classe pour se definir.
$surcouf = new Bateau(); <span style="color:green;">// je peut creer un objet de cette classe.</span>


: $surcouf = new bateau(); <span style="color:green;"> //$surcouf est un objet de type bateau.</span>
Ça marche, mais si on a beaucoup de classe on a beaucoup d'inclusion. c'est pour ça qu'on a un autre moyen qui va chercher tout, toute seule.


===Appeler une methode de l'objet===
function inclureClasse($classe)
{
  require $classe . '.class.php';  <span style="color:green;">//toutes les classes dans ce répertoire peuvent être chargées sur demande.</span>
}
spl_autoload_register('inclureClasse'); <span style="color:green;">//dé que l'ont appel une classe non déclarée, elle sera incluse.</span>


pour appeler une methode, il faut déja avoir crée l'objet, sinon ca marche moins bien.<br />
$surcouf = new Bateau();  <span style="color:green;">//La classe Bateau marche</span>
$objet = new Classe();  <span style="color:green;">//La classe Classe aussi</span>


: $surcouf->direCoucou();
==Constantes de classe==
ici on appel la methode direCoucou de $surcouf, cette methode affiche "Coucou !" a l'écran. c'est sur ce n'est pas très utile, mais on voit le principe.
Les constantes de classe permettent d'avoir une variable immodifiable commune à tous les objets


===Acceder aux attribut===
à mettre avant les méthodes
  const classe = fregate;


Les attribus ne peuvent pas être lus ou modifier directement (ils sont privée). C'est contraignant mais ca les protèges de nos bétises.<br />
==Statique==
Donc si on fais ça: $surcouf->_fret = $surcouf->_fret + 200; &emsp; ca ne marche pas. il faut passer par des methodes


====Modifier un attribut====


pour modifier un attribut, on cree une methode de type mutateur en mettant "set" dans son nom. Ce n'est pas obligatoire mais c'est une convention.
===Attribut===


public function setFioul($fioul)
private static $_textMessage = 'Un homme a la mer !';
  {
    $_carburant = $fioul; <span style="color:green;"> //l'attribut $_carburant = l'argument $fioul.</span>
  }


====Lire un attribut====


pour lire un attribut, on cree une methode de type accesseur en la nommant du nom de l'attribut qu'elle renvoit. c'est aussi une convention.
===Méthode===


public function getFioul($fioul)
  public static function message()
   {
   {
    $_carburant = $fioul; <span style="color:green;"> //l'attribut $_carburant = l'argument $fioul.</span>
    echo self::$_textMessage;
   }
   }
Pour appeler la méthode
Bateau::message();

Dernière version du 9 septembre 2018 à 12:52

Cet article/mémo rassemble les principales commandes de la programmation objet en PHP.

La notion d'objet

En objet, on crée des classes (moule) qui servent à faire des objets. Une classe (moule) peut servir à faire autant d'objets que l'on veut.
Ces classes (moules) il faut les définir, pour cela, on va leur attribuer des attributs (variables) et des méthodes (fonction)

Créer une classe

Nous utilisons l'exemple d'un bateau

<?php
class Bateau
{
  private $_carburant;  // quantitée de carburant
  private $_localisation;  // sa localisation
  private $_fret;  // le nombre de marchandises dans la cale
  private $_couleur;  // la couleur du bateau
  public function setfioul() // methode pour remplir ou vider le reservoir (de x litres)
  {

  }
        
  public function deplacer() //méthode pour deplacer la bateau
  {

  }
       
  public function charger() // méthode pour charger la cale (de x marchandise)
  {

  }

  public function decharger() // méthode pour vider la cale (de x marchandise)
  { 

  }
  public function setCouleur() // méthode pour vider la cale (de x marchandise)
  {

  }
}
?>


Définir une méthode

voici une méthode que nous définissons, on la placera dans la classe bateau

public function direCoucou()
{
  echo 'Coucou !';
}

Créer un objet

Un objet est donc ce qui utilise la classe pour se définir.

 $surcouf = new bateau();  //$surcouf est un objet de type bateau.

Appeler une méthode de l'objet

pour appeler une méthode, il faut déjà avoir créé l'objet, sinon ça marche moins bien.

$surcouf->direCoucou();

ici, on appelle la méthode direCoucou de $surcouf, cette méthode affiche "Coucou !" a l'écran. c'est sur ce n'est pas très utile, mais on voit le principe.

Accéder aux attribut

Les attributs ne peuvent pas être lus ou modifier directement (ils sont privé). C'est contraignant, mais ça les protège de nos bêtises.
Donc si on fait ça: $surcouf->_fret = $surcouf->_fret + 200;   ça ne marche pas. Il faut passer par des méthodes


Accesseur (lire un attribut)

pour lire un attribut, on crée une méthode de type accesseur en la nommant du nom de l'attribut qu'elle renvoi. Ce n'est pas obligatoire, c'est une convention. Le principale est que se soit clair et compréhensible par soi et par les autres

public function carburant()
{
   return $this->_carburant;    //renvoi $_carburant.
}

pour utiliser cette méthode

  $variable = surcouf.carburant();  //recupere dans une variable l'attribut $_carburant de surcouf

Mutateur (modifier un attribut)

pour modifier un attribut, on crée une méthode de type mutateur en mettant "set" dans son nom. C'est une convention également.

public function setFioul($fioul)
{
   $_carburant = $fioul;  //l'attribut $_carburant = l'argument $fioul.
}

pour utiliser cette méthode

  surcouf.carburant(1500);  //met la valeur $_carburant a 1500 

Constructeur (definir l'état quand on crée l'objet)

Le constructeur est une méthode qui définit l'état des attributs quand on crée l'objet. Dès qu'on crée un objet, cette méthode est appelée.
On est obligé de l'appeler __construct (avec deux _)

public function __construct($fioul, $couleur)
{
   echo"bateau crée";
   $this->setFioul($fioul);  //initialise le carburant avec la valeur de l'argument $fioul par la méthode setFioul()    
   $this->setCouleur($couleur);
}

Ici, on passe deux paramètres au constructeur qui va faire l'action selon notre code.

public function __construct($couleur)
{
   echo"bateau crée mais il n'y a que la couleur qui change";
   $this->setCouleur($couleur);
}

si on fait

$surcouf2 = new Bateau(bleu);
         //ou bien
$surcouf3 = new Bateau(1000, bleu);

Pour surcouf2, c'est le deuxième constructeur (à 1 argument) qui sera appelé. Pour surcouf3, c'est le premier (à 2 arguments)

Inclure des classes

Les classes sont dans des fichiers séparés du code à proprement dit, sinon on aurait vite de longues pages. Pour les utiliser, il faut déjà dire quel fichier doit être chargé.

require 'bateau.php';   //La classe bateau qui est dans le fichier bateau.php est incluse
$surcouf = new Bateau(); // je peut creer un objet de cette classe.

Ça marche, mais si on a beaucoup de classe on a beaucoup d'inclusion. c'est pour ça qu'on a un autre moyen qui va chercher tout, toute seule.

function inclureClasse($classe)
{
  require $classe . '.class.php';  //toutes les classes dans ce répertoire peuvent être chargées sur demande.
}

spl_autoload_register('inclureClasse'); //dé que l'ont appel une classe non déclarée, elle sera incluse.
$surcouf = new Bateau();  //La classe Bateau marche
$objet = new Classe();  //La classe Classe aussi

Constantes de classe

Les constantes de classe permettent d'avoir une variable immodifiable commune à tous les objets

à mettre avant les méthodes

 const classe = fregate;

Statique

Attribut

private static $_textMessage = 'Un homme a la mer !';


Méthode

 public static function message()
 {
   echo self::$_textMessage;
 }

Pour appeler la méthode

Bateau::message();