Developpez.com - Rubrique PHP

Le Club des Développeurs et IT Pro

Apprendre la Programmation orientée objet en PHP

Un tutoriel de Quentin Busuttil

Le 2018-02-13 17:15:01, par Buzut, Membre émérite
Chers membres du club,

J'ai le plaisir de vous présenter ce tutoriel  :

Synthèse de la Programmation orientée objet en PHP
Cet article était jusque là en privé, juste pour mon usage personnel, et puis je me suis dit qu'il serait bête de ne pas en faire profiter les autres (c'est le but d'un blog non ?). Voici donc quelques rappels sur la Programmation orientée objet (POO) en PHP. Bien que j'explique un peu les différentes notions, cet article est une cheatsheet sur la POO. Par conséquent, il n'est pas destiné à ceux qui n'en ont jamais fait (ils seront totalement perdus). En revanche, ceux qui connaissent déjà, mais qui, comme moi, ont quelques trous de mémoire, vous pouvez bookmarquer cet article !
Bonne lecture

Retrouvez les meilleurs cours et tutoriels pour apprendre PHP.
  Discussion forum
5 commentaires
  • Jarodd
    Membre expérimenté
    Génial ! Merci pour le partage.
    Un tel pense-bêteavec toutes les infos au même endroit est bien pratique
  • domi65
    Membre éclairé
    Très bonne synthèse, merci !
  • Yadreï
    Membre à l'essai
    Hyper pratique !

    Merci !
  • vttman
    Membre émérite
    Impeccable, c'est tout ce que je cherchais
    en condensé
  • Jarodd
    Membre expérimenté
    Bonjour,

    Dans la partie I-F, quel est l'intérêt d'appeler setDb() dans le constructeur ?

    Pourquoi ne pas faire directement :

    Code :
    1
    2
    3
    4
    public function __construct($db) {
      $this->_db = $db;
    }
    Ou bien si on veut avoir des accesseurs pour tous les attributs :

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    class MonObjetManager {
      public function __construct() {
        // ... autre chose
     }
      public function setDb(PDO $db) {
        $this->_db = $db;
      }
    }
    
    $manager = new MonObjetManager();
    $manager->setDb($db);
    Ce qui est proposé n'est pas faux, mais j'ai l'impression que c'est une solution "bâtarde" entre les deux solutions, et je ne vois pas son intérêt. Soit le constructeur initialise directement la db (et le setDb() ne sert à rien), soit on passe setDb() en private/protected et c'est le constructeur qui l'appelle, mais là si tout est public c'est appeler 2 méthodes pour faire 1 action, donc 1 de trop.