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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Autre
    Inscrit en
    Mars 2021
    Messages
    206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Mars 2021
    Messages : 206
    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 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Maroc

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

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 563
    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 confirmé
    Homme Profil pro
    Autre
    Inscrit en
    Mars 2021
    Messages
    206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Mars 2021
    Messages : 206
    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 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Maroc

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

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 563
    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 confirmé
    Homme Profil pro
    Autre
    Inscrit en
    Mars 2021
    Messages
    206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Mars 2021
    Messages : 206
    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