Apprendre la POO en php
Apprendre la POO en php
Quelques Prérequis avant de commencer
Apprendre la POO en php
Quelques Prérequis avant de commencer
Apprendre la POO en php
Quelques Prérequis avant de commencer
Apprendre la POO en php
Quelques Prérequis avant de commencer
Apprendre la POO en php
Quelques liens utiles
Apprendre la POO en php
Les objets en PHP sont un nouveaux type de variables
Vous connaissez surement les types suivant :
Les objets en PHP sont un nouveaux type de variables
Vous connaissez surement les types suivant :
Voici un exemple d'utilisation de Date en PHP :
<?php
// Spécifie la timezone à utiliser
date_default_timezone_set('Europe/Paris');
// Voici une date sous forme de chaine de character
$date = "2021-05-05";
// Nous ajoutons 3 mois à cette date
$newDate = date('Y-m-d', strtotime($date . ' +3 months'));
// Nous affichons la nouvelle date en format français
echo date('d/m/Y', strtotime($newDate));Nous pouvons améliorer l’exemple grâce à des fonctions :
<?php
// Voici une date sous forme de chaine de character
$date = "2021-05-05";
// Nous ajoutons 3 mois à cette date
$newDate = addMonths($date, 3)
// Nous affichons la nouvelle date en format français
echo formatDate($newDate, 'd/m/Y');Ou bien nous pouvons utiliser un objet :
<?php
// Création de l'objet "MaDate"
$date = new MyDate('2021-05-05');
// On ajoute 3 mois
$date->addMonths(3);
// On formate la date en français
echo $date->format('d/m/Y');Les objets possèdent de nombreux avantages :
Les objets possèdent de nombreux avantages :
Les objets possèdent de nombreux avantages :
Les objets possèdent de nombreux avantages :
Les objets possèdent de nombreux avantages :
Afin d'utiliser des objets nous devons tout d'abord créer :
Afin d'utiliser des objets nous devons tout d'abord créer :
Une instance se créé avec le mot clef :
Éxemple, création d'instance de MyDate :
<?php
$firstDate = new MaDate('2021-05-10');
$secondDate = new MaDate('2021-05-12');Éxemple, création d'instance de MyDate :
<?php
$firstDate = new MaDate('2021-05-10');
$secondDate = new MaDate('2021-05-12');Création d'une première instance de MyDate le 10 mai 2021
Éxemple, création d'instance de MyDate :
<?php
$firstDate = new MaDate('2021-05-10');
$secondDate = new MaDate('2021-05-12');Création d'une secondes instance de MyDate le 12 mai 2021
Chaque instances est indépendante !
<?php
$firstDate = new MaDate('2021-05-10');
$secondDate = new MaDate('2021-05-12');
echo $firstDate->format('d/m/Y');
echo $secondDate->format('d/m/Y');Affiche : "10/05/2021"
Chaque instances est indépendante !
<?php
$firstDate = new MaDate('2021-05-10');
$secondDate = new MaDate('2021-05-12');
echo $firstDate->format('d/m/Y');
echo $secondDate->format('d/m/Y');Affiche : "12/05/2021"
Afin de pouvoir créer une instance nous utilisons un schéma de construction :
Dans notre éxemple: MyDate
<php
$date = new MyDate('2021-05-20');Nom de la Class
Création de l'instance
Variable qui contiendra l'instance
Dans notre éxemple: MyDate
<php
$date = new MyDate('2021-05-20');On dit ici que :
$date est une instance de la class « MyDate »
Un objet PHP contient des variables interne que l'on appel
Voici un éxemple de propriétés simple avec la class MyDate
<php
$date = new MyDate('2021-05-20');
// Notre objet date contient des propriétés (comprenez variable)
// pour chaque membre de la date :
$date->day // Contient 20
$date->month // Contient 05
$date->year // Contient 2021Tout comme les variables nous pouvons changer leurs valeurs :
<php
$date = new MyDate('2021-05-20');
// On change le jour de notre date
$date->day = 25;
echo $date->format('d/m/Y'); // affiche 25/05/2021Les objets en PHP contiennent aussi des fonctions que l'on appel :
Voici un exemple de méthode sur notre objet MyDate
<php
$date = new MyDate('2021-05-20');
$date->addMonths(3);
echo $date->format('d/m/Y');Voici un exemple de méthode sur notre objet MyDate
<php
$date = new MyDate('2021-05-20');
$date->addMonths(3);
echo $date->format('d/m/Y');On utilise la méthode "addMonth" sur l'instance de MyDate
Voici un exemple de méthode sur notre objet MyDate
<php
$date = new MyDate('2021-05-20');
$date->addMonths(3);
echo $date->format('d/m/Y');On utilise la méthode "format" sur l'instance de MyDate
Pour résumer tout ça ! Un objet c'est :
Afin de bien comprendre comment fonctionne les objets nous allons maintenant créer notre première class
Créons un fichier PHP dans 'src/Personnage.php' et plaçons le code suivant :
<?php
class Personnage
{
public int $vie = 100;
public int $attaque = 20;
}
Maintenant importons et utilisons notre première class dans `public/index.php` :
<?php
require_once '../src/Personnage.php';
$merlin = new Personnage();
var_dump($merlin);
Nous pouvons maintenant afficher le résultat dans notre navigateur :
Rétournons dans `src/Personnage.php` afin de comprendre
<?php
class Personnage
{
public int $vie = 100;
public int $attaque = 20;
}
Ici nous créons un schéma de construction : une class Personnage
Rétournons dans `src/Personnage.php` afin de comprendre
<?php
class Personnage
{
public int $vie = 100;
public int $attaque = 20;
}
ATTENTION !
Les class commencent toutes par une Majuscule et correspondent au nom de notre fichier PHP !
Rétournons dans `src/Personnage.php` afin de comprendre
<?php
class Personnage
{
public int $vie = 100;
public int $attaque = 20;
}
Si notre class s'appel Personnage alors notre fichier PHP doit s'appeler Personnage.php
Rétournons dans `src/Personnage.php` afin de comprendre
<?php
class Personnage
{
public int $vie = 100;
public int $attaque = 20;
}
Ici nous déclarons 2 propriétés : "$vie" et "$attack"
Un propriété possède 4 sections :
<?php
class Personnage
{
public int $vie = 100;
public int $attaque = 20;
}
Valeur de la propriété
Nom de la propriété
Type de la propriété, ici "int"
La porté de notre propriété (nous en reparlerons un peu plus tard :) )
Maintenant regardons comment utiliser notre personnage :
<?php
require_once '../src/Personnage.php';
$merlin = new Personnage();
var_dump($merlin);
Nous importons le fichier PHP de notre class
Maintenant regardons comment utiliser notre personnage :
<?php
require_once '../src/Personnage.php';
$merlin = new Personnage();
var_dump($merlin);
Création d'une première instance de Personnage : $merlin
Maintenant regardons comment utiliser notre personnage :
<?php
require_once '../src/Personnage.php';
$merlin = new Personnage();
var_dump($merlin);
Nous déboguons notre objet
Nous pouvons maintenant jouer avec notre objet PHP :
<?php
require_once '../src/Personnage.php';
$merlin = new Personnage();
$merlin->vie = 50;
$merlin->attaque = 40;
$arthur = new Personnage();
$arthur->vie = 100;
$arthur->attaque = 30;
var_dump($merlin);
var_dump($arthur);
Voici ce que notre navigateur nous affiche
Il est possible dans une méthode de faire référence à l'instance en cours et d'accéder au propriétés de notre objet en utilisant
Exemple : Une méthode qui régénère notre Personnage
<?php
class Personnage
{
public int $vie = 100;
public int $attaque = 20;
public function regenerer(): void
{
$this->vie = 100;
}
}
Voici comment écrire une méthode !
<?php
class Personnage
{
public int $vie = 100;
public int $attaque = 20;
public function regenerer(): void
{
$this->vie = 100;
}
}
Type de retour de notre méthode. Ici void signifie rien du tout car notre méthode n'as pas d'instruction "return"
Voici comment écrire une méthode !
<?php
class Personnage
{
public int $vie = 100;
public int $attaque = 20;
public function regenerer(): void
{
$this->vie = 100;
}
}
Nom de la fonction
Voici comment écrire une méthode !
<?php
class Personnage
{
public int $vie = 100;
public int $attaque = 20;
public function regenerer(): void
{
$this->vie = 100;
}
}
Porté de la fonction (nous verrons cela un peu plus tard :) )
Voici comment écrire une méthode !
<?php
class Personnage
{
public int $vie = 100;
public int $attaque = 20;
public function regenerer(): void
{
$this->vie = 100;
}
}
Nous pouvons faire référence à l'instance en cour et accéder au propriétés de notre objet en utilisant $this
Utilisons notre méthode "régénérer"
<?php
require_once '../src/Personnage.php';
$merlin = new Personnage();
$merlin->vie = 50;
$merlin->attaque = 40;
$merlin->regenerer();
$arthur = new Personnage();
$arthur->vie = 100;
$arthur->attaque = 30;
var_dump($merlin);
var_dump($arthur);
Tout comme les fonctions, les méthodes peuvent recevoir des paramètres :
<?php
class Personnage
{
public int $vie = 100;
public int $attaque = 20;
public function regenerer(int $vie = 100): void
{
$this->vie = $this->vie + $vie;
}
}
<?php
class Personnage
{
public int $vie = 100;
public int $attaque = 20;
public function regenerer(int $vie = 100): void
{
$this->vie = $this->vie + $vie;
}
}
La valeur par défaut de notre paramètre
<?php
class Personnage
{
public int $vie = 100;
public int $attaque = 20;
public function regenerer(int $vie = 100): void
{
$this->vie = $this->vie + $vie;
}
}
Le nom de notre paramètre
<?php
class Personnage
{
public int $vie = 100;
public int $attaque = 20;
public function regenerer(int $vie = 100): void
{
$this->vie = $this->vie + $vie;
}
}
Le type de notre paramètre
<?php
class Personnage
{
public int $vie = 100;
public int $attaque = 20;
public function regenerer(int $vie = 100): void
{
$this->vie = $this->vie + $vie;
}
}
On assigne la vie de notre objet à la valeur envoyé en paramètre
Utilisons la méthode régénérer avec un paramètre !
<?php
require_once '../src/Personnage.php';
$merlin = new Personnage();
$merlin->vie = 50;
$merlin->attaque = 40;
$merlin->regenerer(20);
$arthur = new Personnage();
$arthur->vie = 100;
$arthur->attaque = 30;
var_dump($merlin);
var_dump($arthur);
Exercice
Écrire une méthode "afficher" qui affiche la vie et l'attaque du personnage et utiliser la méthode dans `public/index.php`
Solution
<?php
class Personnage
{
public int $vie = 100;
public int $attaque = 20;
public function regenerer(int $vie = 100): void
{
$this->vie = $this->vie + $vie;
}
public function afficher(): void
{
echo 'Ce personnage a '
. $this->vie
. ' points de vie et '
. $this->attaque
. ' en attaque.';
}
}
Solution
<?php
require_once '../src/Personnage.php';
$merlin = new Personnage();
$merlin->vie = 50;
$merlin->attaque = 40;
$merlin->regenerer(20);
$arthur = new Personnage();
$arthur->vie = 100;
$arthur->attaque = 30;
$merlin->afficher();
echo '<br/>';
$arthur->afficher();
Exercice
Créer une fonction "attaquer" qui reçoit un Personnage et enlève la vie du personnage en fonction de son attaque !
Utiliser cette méthode dans `public/index.php`
Solution
<?php
class Personnage
{
public int $vie = 100;
public int $attaque = 20;
public function attaquer(Personnage $cible): void
{
$cible->vie = $cible->vie - $this->attaque;
}
public function regenerer(int $vie = 100): void
{ ...
}
public function afficher(): void
{ ...
}
}Solution
<?php
require_once '../src/Personnage.php';
$merlin = new Personnage();
$merlin->vie = 50;
$merlin->attaque = 40;
$arthur = new Personnage();
$arthur->vie = 100;
$arthur->attaque = 30;
$arthur->attaquer($merlin);
$merlin->afficher();
echo '<br/>';
$arthur->afficher();
Nos objets possèdent une méthode spécial qui nous permet de construire notre instance :
Nous pouvons facilement définir un constructeur