Votre guide dans les plaines du far-web

Formation développeur web


« Donne un poisson à un homme, tu le nourris pour un jour. Apprends-lui à pêcher, tu le nourris pour toujours. » Lao Tseu

Visioconférence

Mis à jour le

Présentation

Mis à jour le

PHP permet de faire de la POO depuis longtemps. A la base, PHP n'intégrait pas d'aspect POO, mais les concepteurs du langage l'ont introduit il y un bon moment déjà (un petit peu avant la version 5, si ma mémoire est bonne).

Ce cours contient un…

~~ Fin de l'extrait ~~

Classes et instances de classes

Mis à jour le
Voir le cours générique sur les classes et instances de classe.


Voici comment définir les classes et les instances de classes en PHP (copiez le dans votre sandbox):

class User {    //Création de la classe

 //contenu de la classe

}

$user = new User();  //Instanciation d'un…
~~ Fin de l'extrait ~~

Attributs et propriétés

Mis à jour le
Voir cours générique sur les attributs et propriétés.

Sandbox :

class User {    //Création de la classe

 public $id;
 public $pseudo;
 public $password;
 public $type;

}

$user = new User();  //Instanciation d'un objet

var_dump($user); //Affichage de l'objet user
~~ Fin de l'extrait ~~

Constructeur

Mis à jour le
Voir cours générique sur le constructeur.


Sanbox :

class User {    //Création de la classe

 public $id;
 public $pseudo;
 public $password;
 public $type;

 public function __construct($id, $pseudo, $password, $type){   
   //Contenu du constructeur
 }
 
}

$user = new User(1, 'pierro82', '1234', 'client');  //Instanciation d'un objet avec les bons…
~~ Fin de l'extrait ~~

Le mot-clé this

Mis à jour le
Voir cours générique sur le mot-clé this.

Rien de particulier à ajouter en PHP sur le mot clé this, il fonctionne de la même manière que JS. On pourra donc accéder aux propriétés et méthodes d'un objet dans la classe via la variable $this (ne pas oublier…

~~ Fin de l'extrait ~~

Méthodes

Mis à jour le
Voir le cours générique sur les méthodes en POO.


Sandbox :

class User {    //Création de la classe

 public $id;
 public $pseudo;
 public $password;
 public $type;

 public function __construct($id, $pseudo, $password, $type){
   //Contenu du constructeur
   $this->id = $id;
   $this->pseudo = $pseudo;
   $this->password = $password;
   $this->type = $type;…
~~ Fin de l'extrait ~~

Opérateurs de visibilité

Mis à jour le

Voir cours générique

Attributs et méthodes statiques

Mis à jour le

Voir cours générique

Accesseurs et mutateurs

Mis à jour le
Voir cours générique pour les généralités sur les getters/setters.
Important : pas de mots-clés get et set en PHP, mais possibilité d'utiliser les méthodes magiques pour faire quelque chose de pratique.


Voici les trois possibilités pour mettre en place des getters et setters en PHP…

~~ Fin de l'extrait ~~

Héritage

Mis à jour le

Voir cours générique

Méthodes magiques

Mis à jour le

https://www.php.net/manual/fr/language.oop5.magic.php

Autoloading

Mis à jour le

https://www.php.net/manual/fr/function.spl-autoload-register.php

+ voir cours dans MVC

~~ Fin de l'extrait ~~

Fetch_class et Fetch_into

Mis à jour le

FETCH_CLASS et FETCH_INTO sont des fetch mode de PDO qui sont très utiles lorsque l'on travaille avec des classes. Ils permettent d'instancier une classe avec les valeurs reçue par PDO, ou bien d'hydrater un objet déjà existant.



~~ Fin de l'extrait ~~

Chaîner des méthodes entre elles

Mis à jour le

Vous avez très certainement vu que l'on pouvait (pas toujours) appeler plusieurs méthodes les unes à la suite des autres lorsque l'on code en POO.

(image visible sur la plateforme de formation)


En JavaScript…

~~ Fin de l'extrait ~~

Classes abstraites

Mis à jour le
Définition
  • Une méthode abstraite ne comporte que sa signature.
  • Une classe contenant une méthode abstraite DOIT être abstraite.
  • Une classe abstraite ne peut pas être instanciée.


Une classe enfant d'une classe abstraite doit :

En définir les méthodes abstraites (Accessibilité identique ou supérieure.…

~~ Fin de l'extrait ~~

Interfaces

Mis à jour le
  • Une interface ne comporte que des méthodes abstraites publiques ou des constantes de classe publiques.
  • Une classe qui implémente une interface DOIT en implémenter la totalité des méthodes. Elle offre donc une garantie d'implémentation.
  • Une classe peut implémenter plusieurs interfaces.


Exemple…

~~ Fin de l'extrait ~~

Le mot clé final

Mis à jour le

Le mot clé final permet d'interdire l'héritage de classes ou de méthodes.


Lien vers la doc officielle.
~~ Fin de l'extrait ~~

API de réflection

Mis à jour le

L'API de réflection permet de faire une analyse d'une classe, fonction ou autres, sur elle-même (d'où le terme introspection). Cela veut dire que vous pouvez retirer des informations technique sur une classe, au lieu de l'utiliser de façon classique.


Exemple…
~~ Fin de l'extrait ~~

TP2

Mis à jour le