Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

  1. #1
    Membre habitué
    Débutant POO, passer un objet en paramètre d'un constructeur
    Bonjour,

    Je m'initie à la POO depuis peu et j'essaie de réaliser un petit exercice de livre d'or : une page toute simple qui permet de laisser des commentaires grâce à un formulaire tout simple (pseudo et message)
    J'aimerais faire apparaitre la date de publication grace à un objet DateTime également

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    if(isset($_POST['username']) && isset($_POST['message'])) {
        $message = new Message($_POST['username'], $_POST['message'], new DateTime);


    Et voici mon constructeur :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public function __construct($username, $message, DateTime $date)
        {
            $this->username = $username;
            $this->message = $message;
            $this->date = $date;
        }


    Ce début de logique est-il correct ?

    Cordialement

  2. #2
    Modérateur

    Oui , si ce n'est que si à chaque instanciation de ton objet tu lui construit un datetime à la date du jour , autant le faire directement dans le constructeur. Ça évite de retaper le paramètre à chaque fois.

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public function __construct($username, $message)
    {
            $this->username = $username;
            $this->message = $message;
            $this->date = new Datetime();
    }


    Cette remarque n'est valable que si le datetime que tu passes n'est pas modifié par quelque chose avant. Dans mon exemple , on demande toujoursu ndatetime à la date courante donc pas de problème.
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre habitué
    Ok merci beaucoup, j'ai encore du mal avec les paramètres et surtout quand il s'agit d'objets je commence à paniquer un peu !
    Cela dit, l'instance de ma logique n'est écrite qu'une fois donc ça revient au même non (je crée une instance de ma classe Message si le formulaire est correctement rempli) ? J'espère ne pas dire une grosse bêtise...

  4. #4
    Modérateur

    Si tu n'instancie qu'une fois ta classe Message , effectivement le faire dans le constructeur ou le passer en paramètre revient au même en terme de "difficulté" d'écriture.
    L'avoir en paramètre permet de rendre la chose plus facilement évolutive si par exemple un jour tu as besoin de créer un message à une date différente.

    C'est un peu la problématique du développement. Faire du code extrèmement modulable et évolutif est en général compliqué et chronophage. Il faut donc arriver à identifier ce qu'on risque d'avoir besoin de faire évoluer dans le temps pour effectivement rendre ces parties facilement évolutives et laisser le reste "fixe" pour se faciliter un peu la vie.
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre habitué
    Merci encore pour cette réponse très claire. Tu ne donnerais pas des cours particuliers dans la région bordelaise à tout hasard ? Tu sembles très pédagogue !

  6. #6
    Modérateur

    Haha non ,
    j'eusse donné des cours mais c'était pas particulier et encore moins à bordeaux
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java