IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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 [PHP 7]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 495
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 495
    Billets dans le blog
    1
    Par défaut 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

  2. #2
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    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.

  3. #3
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 495
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 495
    Billets dans le blog
    1
    Par défaut
    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;
    }

  4. #4
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    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.

  5. #5
    Invité
    Invité(e)
    Par défaut
    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.

  6. #6
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 495
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 495
    Billets dans le blog
    1
    Par défaut
    Merci pour vos conseils.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Retour de Fonction de type structure
    Par Aqllex dans le forum C++
    Réponses: 2
    Dernier message: 17/05/2010, 18h25
  2. type de retour de fonction template
    Par k1000 dans le forum Langage
    Réponses: 5
    Dernier message: 21/04/2008, 12h41
  3. Réponses: 3
    Dernier message: 19/03/2008, 23h11
  4. Réponses: 1
    Dernier message: 25/01/2006, 11h30
  5. Perte de type en retour de fonction
    Par Bebel dans le forum Langage
    Réponses: 8
    Dernier message: 22/12/2005, 13h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo