« PHP objet » : différence entre les versions
Aucun résumé des modifications |
|||
(15 versions intermédiaires par le même utilisateur non affichées) | |||
Ligne 1 : | Ligne 1 : | ||
Cet article/mémo rassemble les principales commandes de la programmation objet en PHP. | |||
Cet article | |||
==La notion d'objet== | ==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' | 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) | 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== | ==Créer une classe== | ||
Ligne 50 : | Ligne 47 : | ||
===Définir une méthode=== | ===Définir une méthode=== | ||
voici une méthode que nous définissons, | voici une méthode que nous définissons, on la placera dans la classe bateau | ||
public function direCoucou() | public function direCoucou() | ||
Ligne 63 : | Ligne 60 : | ||
$surcouf = new bateau(); <span style="color:green;"> //$surcouf est un objet de type bateau.</span> | $surcouf = new bateau(); <span style="color:green;"> //$surcouf est un objet de type bateau.</span> | ||
===Appeler une | ===Appeler une méthode de l'objet=== | ||
pour appeler une | pour appeler une méthode, il faut déjà avoir créé l'objet, sinon ça marche moins bien.<br /> | ||
$surcouf->direCoucou(); | $surcouf->direCoucou(); | ||
ici on appelle la méthode direCoucou de $surcouf, cette | 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 | 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 | 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)==== | ====Accesseur (lire un attribut)==== | ||
pour lire un attribut, on | 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() | public function carburant() | ||
Ligne 84 : | Ligne 81 : | ||
return $this->_carburant; <span style="color:green;"> //renvoi $_carburant.</span> | return $this->_carburant; <span style="color:green;"> //renvoi $_carburant.</span> | ||
} | } | ||
pour utiliser cette | pour utiliser cette méthode | ||
$variable = surcouf.carburant(); <span style="color:green;"> //recupere dans une variable l'attribut $_carburant de surcouf</span> | $variable = surcouf.carburant(); <span style="color:green;"> //recupere dans une variable l'attribut $_carburant de surcouf</span> | ||
====Mutateur (modifier un attribut)==== | ====Mutateur (modifier un attribut)==== | ||
pour modifier un attribut, on | 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) | public function setFioul($fioul) | ||
Ligne 96 : | Ligne 92 : | ||
$_carburant = $fioul; <span style="color:green;"> //l'attribut $_carburant = l'argument $fioul.</span> | $_carburant = $fioul; <span style="color:green;"> //l'attribut $_carburant = l'argument $fioul.</span> | ||
} | } | ||
pour utiliser cette | pour utiliser cette méthode | ||
surcouf.carburant(1500); <span style="color:green;"> //met la valeur $_carburant a 1500 </span> | surcouf.carburant(1500); <span style="color:green;"> //met la valeur $_carburant a 1500 </span> | ||
====Constructeur (definir l'état quand on crée l'objet)==== | ====Constructeur (definir l'état quand on crée l'objet)==== | ||
Le constructeur est une | 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 _) | On est obligé de l'appeler __construct (avec deux _) | ||
Ligne 107 : | Ligne 103 : | ||
{ | { | ||
echo"bateau crée"; | echo"bateau crée"; | ||
$this->setFioul($fioul); <span style="color:green;"> //initialise le carburant avec la valeur de l'argument $fioul par la | $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); | $this->setCouleur($couleur); | ||
} | } | ||
Ici, on passe deux paramètres au constructeur qui va faire l'action selon notre code. | |||
public function __construct($couleur) | public function __construct($couleur) | ||
{ | { | ||
echo"bateau crée mais y | echo"bateau crée mais il n'y a que la couleur qui change"; | ||
$this->setCouleur($couleur); | $this->setCouleur($couleur); | ||
} | } | ||
Ligne 122 : | Ligne 118 : | ||
<span style="color:green;">//ou bien</span> | <span style="color:green;">//ou bien</span> | ||
$surcouf3 = new Bateau(1000, bleu); | $surcouf3 = new Bateau(1000, bleu); | ||
Pour surcouf2 c'est le | Pour surcouf2, c'est le deuxième constructeur (à 1 argument) qui sera appelé. Pour surcouf3, c'est le premier (à 2 arguments) | ||
==Inclure des classes== | ==Inclure des classes== | ||
Ligne 133 : | Ligne 129 : | ||
$surcouf = new Bateau(); <span style="color:green;">// je peut creer un objet de cette classe.</span> | $surcouf = new Bateau(); <span style="color:green;">// je peut creer un objet de cette classe.</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. | |||
function inclureClasse($classe) | function inclureClasse($classe) | ||
{ | { | ||
require $classe . '.class.php'; <span style="color:green;">//toutes les | 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é | spl_autoload_register('inclureClasse'); <span style="color:green;">//dé que l'ont appel une classe non déclarée, elle sera incluse.</span> | ||
$surcouf = new Bateau(); <span style="color:green;">//La classe Bateau marche</span> | $surcouf = new Bateau(); <span style="color:green;">//La classe Bateau marche</span> | ||
$objet = new Classe(); <span style="color:green;">//La classe Classe aussi</span> | $objet = new Classe(); <span style="color:green;">//La classe Classe aussi</span> | ||
== | ==Constantes de classe== | ||
Les constantes de classe permettent d'avoir | Les constantes de classe permettent d'avoir une variable immodifiable commune à tous les objets | ||
à mettre avant les méthodes | |||
const classe = fregate; | const classe = fregate; | ||
==Statique== | ==Statique== | ||
Ligne 160 : | Ligne 155 : | ||
=== | ===Méthode=== | ||
public static function message() | public static function message() | ||
Ligne 167 : | Ligne 162 : | ||
} | } | ||
Pour appeler la | Pour appeler la méthode | ||
Bateau::message(); | 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();