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 :

erreur new DateTime


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Homme Profil pro
    Autre
    Inscrit en
    Mars 2021
    Messages
    206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Mars 2021
    Messages : 206
    Points : 93
    Points
    93
    Par défaut erreur new DateTime
    Bonjour,
    je demande encore votre aide. Je suis un tutoriel et je n'arrive pas à trouver la solution voici ma méthode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public function getMessages() : array {
                $content = file_get_contents($this->file);
                $lines = explode(PHP_EOL, $content);
                $messages =[];
                foreach($lines as $line) {
                    $data = json_decode($line, true);
                    $messages[]= new Message($data['username'], $data['message'], new DateTime("@" . $data['date']));
                }
                return $messages;
            }
    l'erreur est :
    Fatal error: Uncaught Exception: DateTime::__construct(): Failed to parse time string (@) at position 0 (@): Unexpected character

    j'ai aussi essayé de cette facon mais je suppose que le timestamp pose problème :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $messages[]= new Message($data['username'], $data['message'], $data['date');
    merci pour votre aide

  2. #2
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 447
    Points : 4 966
    Points
    4 966
    Par défaut
    Bonjour,

    Vous devriez utiliser ->format() sur l'objet DateTime pour récupérer la date en tant qu'une chaîne de caractère :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $date=new DateTime($data['date']);
    $messages[]= new Message($data['username'], $data['message'],$date->format("Y-m-d H:i:s") );

  3. #3
    Membre régulier
    Homme Profil pro
    Autre
    Inscrit en
    Mars 2021
    Messages
    206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Mars 2021
    Messages : 206
    Points : 93
    Points
    93
    Par défaut
    Bonjour,
    merci pour votre réponse j'avais oublié de préciser que j'avais déjà essayé cela, mais il me renvoi une autre erreur et je pense que c'est lié à ce constructeur d'une autre class :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public function __construct(string $username, string $message, ?DateTime $date=null) {
            $this->username = $username;
            $this->message = $message;
            $this->date = $date?: new DateTime();
        }
    le message d'erreur est le suivant :
    Uncaught TypeError: Argument 1 passed to Message::__construct() must be of the type string, null given, called in ........ on line 34 and defined in .......... \class\Message.php on line 12
    merci

  4. #4
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 447
    Points : 4 966
    Points
    4 966
    Par défaut
    Uncaught TypeError: Argument 1 passed to Message::__construct() must be of the type string, null given.

    Le message d'erreur dit que le constructeur attend un string (chaîne de caractère) pour le premier argument qui est string $username alors que la valeur passée est null.

    Avez-vous essayer d'afficher cette valeur avec un echo ou var_dump ?

  5. #5
    Membre régulier
    Homme Profil pro
    Autre
    Inscrit en
    Mars 2021
    Messages
    206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Mars 2021
    Messages : 206
    Points : 93
    Points
    93
    Par défaut
    La prochaine fois je serai plus attentif à lire les erreurs.. j'ai recommencé à partir de la fin de mon code en faisant des var_dump pour remonter et trouver l'erreur. Je suis débutant mais la prochaine fois je ferai des var_dump au fur à mesure de l'écriture du code..
    J'ai crée (en suivant un tutoriel) un petit livre d'or, à la validation du formulaire un fichier est crée avec l'écriture des commentaires en encodage JSON. Le problème venait justement du fichier et de l'encodage.
    Merci pour votre conseil.
    Bonne soirée

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

Discussions similaires

  1. Erreur "new key" ssh paramiko
    Par Leniouns dans le forum Bibliothèques tierces
    Réponses: 1
    Dernier message: 05/09/2012, 13h14
  2. [PDO] Insert avec requête préparée, erreur champs datetime
    Par maxwell374 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 29/07/2011, 11h36
  3. Réponses: 12
    Dernier message: 20/03/2010, 00h52
  4. Réponses: 2
    Dernier message: 10/02/2010, 19h18
  5. erreur Mysql datetime
    Par gunnar dans le forum Windows Forms
    Réponses: 10
    Dernier message: 05/07/2007, 09h00

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