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

Langage PHP Discussion :

Retour de fonction de type DateTime


Sujet :

Langage PHP

  1. #1
    Membre expert
    Retour de fonction de type DateTime
    Bonsoir,

    voici une fonction qui retourne une variable de type DateTime, sauf que ce retour n'est pas accepté. Pourquoi ? Merci.

    Code php :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
        static public function SQLFormatDate($date): DateTime {
        if (UtilFct::contains("Earlier",$date)) $date='Dec-18';
        $formats = ['d/m/Y H:i','M d, Y', 'M d Y', 'M,d', 'M-d'];
        foreach ($formats as $f) {
            if (($val=\DateTime::createFromFormat($f, $date)) !== false) {
                return ((DateTime)$val);
            }
        }
        return (DateTime)false;
    }


    Parse error: syntax error, unexpected '$val' (T_VARIABLE), expecting ';' in C:\wamp64\www\ticket2\Classes\Olivier\Validator.php on line 58
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

  2. #2
    Modérateur

    Salut,

    mais c'est quoi ces notations ?
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    return ((DateTime)$val);
    return (DateTime)false;


    Tu fais quoi là ? Je lis tes codes et je suis dubitatif...
    Réfléchis un peu : comment veux-tu convertir false en DateTime ?
    Pareil pour $var, tu ne peux pas caster avec une classe : une classe produit une instance donc tu dois l'instancier avec new.
    D'ailleurs, $val est déjà une instance de la classe DateTime, donc ton code est bancal.
    Il faut que tu essaies de suivre le déroulé du code et pas écrire des lignes comme ça au hasard, tu ne vas pas y arriver.
    # Dans la Création, tout est permis mais tout n'est pas utile...

  3. #3
    Membre expert
    Oui, j'ai tellement pas l'habitude de la POO que j'ai fait n'importe quoi. C'est mieux comme ça :
    Code php :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
    static public function SQLFormatDate($date) {
        if (UtilFct::contains("Earlier",$date)) $date='Dec-18';
        $formats = ['d/m/Y H:i','M d, Y', 'M d Y', 'M,d', 'M-d'];
        foreach ($formats as $f) {
            if (($val=\DateTime::createFromFormat($f, $date)) !== false) {
                return ($val->format('Y-m-d'));
            }
        }
        return false;
    }
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

  4. #4
    Modérateur

    encore une chose : perds l'habitude de mettre des () au return.
    return ($val->format('Y-m-d')); ⇒ return $val->format('Y-m-d');. Généralement les () sont réservés à la gestion des priorités dans une opération complexe ou à l'évaluation boolean d'une expression.
    # Dans la Création, tout est permis mais tout n'est pas utile...

  5. #5
    Rédacteur/Modérateur

    Bonjour,

    Je rappelle : fais SIMPLE.
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
            if (($val=\DateTime::createFromFormat($f, $date)) !== false) {
                return ($val->format('Y-m-d'));
            }

    s'écrit PLUS LISIBLEMENT *:
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
            $val = \DateTime::createFromFormat($f, $date);
            if ($val !== false) {
                return $val->format('Y-m-d');
            }

    * Donc, plus facile à DÉBOGUER.
    "Si tu suis le chemin qui s'appelle « plus tard », tu arriveras à la place qui s'appelle « jamais »."
    François Camille Prévot (1910-1996), instituteur puis Directeur d'école et... mon grand-père.
    "Pose ta question, tu seras idiot une seconde. Ne la pose pas, tu seras idiot toute ta vie."
    Albert Einstein (1879-1955).
    Mes tutos DVP
    Gestion-Affichage de Nouvelles
    Affichage en tableau HTML
    Fonctions de redimensionnement d'images

  6. #6
    Membre expert
    Merci pour vos conseils.
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell