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

Symfony PHP Discussion :

Erreur dans le code source de Symfony 5.3.1


Sujet :

Symfony PHP

  1. #1
    Membre habitué
    Homme Profil pro
    Webmaster
    Inscrit en
    Juillet 2015
    Messages
    518
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Juillet 2015
    Messages : 518
    Points : 184
    Points
    184
    Par défaut Erreur dans le code source de Symfony 5.3.1
    Bonjour,

    Mon titre est peut être un peu prétentieux et je ne souhaite pas l'être du tout..

    Le problème :
    J'ai téléchargé Symfony 5.3.1, le problème est que la commande php bin/console make:user ne génère plus la méthode getUsername dans l'entité User ! Alors oui d'accord cette méthode est devenue obsolète depuis la version 5.3 ok tres bien mais alors il faut supprimer aussi le code dans l'interface UserInterface car lui demande bien d'avoir une méthode getUsername dans User ! Voila le problème

    UserInterface
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    <?php
     
    /*
     * This file is part of the Symfony package.
     *
     * (c) Fabien Potencier <fabien@symfony.com>
     *
     * For the full copyright and license information, please view the LICENSE
     * file that was distributed with this source code.
     */
     
    namespace Symfony\Component\Security\Core\User;
     
    /**
     * Represents the interface that all user classes must implement.
     *
     * This interface is useful because the authentication layer can deal with
     * the object through its lifecycle, using the object to get the hashed
     * password (for checking against a submitted password), assigning roles
     * and so on.
     *
     * Regardless of how your users are loaded or where they come from (a database,
     * configuration, web service, etc.), you will have a class that implements
     * this interface. Objects that implement this interface are created and
     * loaded by different objects that implement UserProviderInterface.
     *
     * @see UserProviderInterface
     *
     * @method string getUserIdentifier() returns the identifier for this user (e.g. its username or e-mailaddress)
     *
     * @author Fabien Potencier <fabien@symfony.com>
     */
    interface UserInterface
    {
        /**
         * Returns the roles granted to the user.
         *
         *     public function getRoles()
         *     {
         *         return ['ROLE_USER'];
         *     }
         *
         * Alternatively, the roles might be stored on a ``roles`` property,
         * and populated in any number of different ways when the user object
         * is created.
         *
         * @return string[] The user roles
         */
        public function getRoles();
     
        /**
         * Returns the password used to authenticate the user.
         *
         * This should be the hashed password. On authentication, a plain-text
         * password will be hashed, and then compared to this value.
         *
         * This method is deprecated since Symfony 5.3, implement it from {@link PasswordAuthenticatedUserInterface} instead.
         *
         * @return string|null The hashed password if any
         */
        public function getPassword();
     
        /**
         * Returns the salt that was originally used to hash the password.
         *
         * This can return null if the password was not hashed using a salt.
         *
         * This method is deprecated since Symfony 5.3, implement it from {@link LegacyPasswordAuthenticatedUserInterface} instead.
         *
         * @return string|null The salt
         */
        public function getSalt();
     
        /**
         * Removes sensitive data from the user.
         *
         * This is important if, at any given point, sensitive information like
         * the plain-text password is stored on this object.
         */
        public function eraseCredentials();
     
        /**
         * @return string
         *
         * @deprecated since Symfony 5.3, use getUserIdentifier() instead
         */
        public function getUsername();
    }
    L'entité User que génère la commande php bin/console make:user
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    <?php
     
    namespace App\Entity;
     
    use App\Repository\UserRepository;
    use Doctrine\ORM\Mapping as ORM;
    use Symfony\Component\Security\Core\User\PasswordAuthenticatedUserInterface;
    use Symfony\Component\Security\Core\User\UserInterface;
     
    /**
     * @ORM\Entity(repositoryClass=UserRepository::class)
     */
    class User implements UserInterface, PasswordAuthenticatedUserInterface
    {
        /**
         * @ORM\Id
         * @ORM\GeneratedValue
         * @ORM\Column(type="integer")
         */
        private $id;
     
        /**
         * @ORM\Column(type="string", length=180, unique=true)
         */
        private $email;
     
        /**
         * @ORM\Column(type="json")
         */
        private $roles = [];
     
        /**
         * @var string The hashed password
         * @ORM\Column(type="string")
         */
        private $password;
     
        public function getId(): ?int
        {
            return $this->id;
        }
     
        public function getEmail(): ?string
        {
            return $this->email;
        }
     
        public function setEmail(string $email): self
        {
            $this->email = $email;
     
            return $this;
        }
     
        /**
         * A visual identifier that represents this user.
         *
         * @see UserInterface
         */
        public function getUserIdentifier(): string
        {
            return (string) $this->email;
        }
     
        /**
         * @see UserInterface
         */
        public function getRoles(): array
        {
            $roles = $this->roles;
            // guarantee every user at least has ROLE_USER
            $roles[] = 'ROLE_USER';
     
            return array_unique($roles);
        }
     
        public function setRoles(array $roles): self
        {
            $this->roles = $roles;
     
            return $this;
        }
     
        /**
         * @see PasswordAuthenticatedUserInterface
         */
        public function getPassword(): string
        {
            return $this->password;
        }
     
        public function setPassword(string $password): self
        {
            $this->password = $password;
     
            return $this;
        }
     
        /**
         * Returning a salt is only needed, if you are not using a modern
         * hashing algorithm (e.g. bcrypt or sodium) in your security.yaml.
         *
         * @see UserInterface
         */
        public function getSalt(): ?string
        {
            return null;
        }
     
        /**
         * @see UserInterface
         */
        public function eraseCredentials()
        {
            // If you store any temporary, sensitive data on the user, clear it here
            // $this->plainPassword = null;
        }
    }
    voila voila...

  2. #2
    Expert confirmé
    Avatar de BeanzMaster
    Homme Profil pro
    Amateur Passionné
    Inscrit en
    Septembre 2015
    Messages
    1 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Amateur Passionné
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Septembre 2015
    Messages : 1 899
    Points : 4 346
    Points
    4 346
    Billets dans le blog
    2
    Par défaut
    Salut je te rassures, moi je suis resté en 5.1 car trop de soucis depuis la 5.2. Je ne comprend d'ailleurs pas pourquoi les devs de Symfony sorte des versions soit disant stables et qui ne le sont pas. Si tu regardes ton composer.json et tu regardes les versions des dépendances tu remarqueras qu'il y en y a encore de la 5.2. Bref je pensent qu'ils vont trop vite, on est passé de la 4.4 à la 5.3 beaucoup trop rapidement à mon avis

    Hier, idem j'ai voulu upgrader un de mes projets pour voir et la paf une grosse erreur avec le messenger "error messenger.receiver locator has no definition" d'ou coup j'ai downgradé et suis revenue sur la 5.1

    Bref pour ma part je vais attendre la sortie de la 5.4 en novembre normalement, plus 2 ou 3 mois, et qui sera une LTS

    A+
    • "L'Homme devrait mettre autant d'ardeur à simplifier sa vie qu'il met à la compliquer" - Henri Bergson
    • "Bien des livres auraient été plus clairs s'ils n'avaient pas voulu être si clairs" - Emmanuel Kant
    • "La simplicité est la sophistication suprême" - Léonard De Vinci
    • "Ce qui est facile à comprendre ou à faire pour toi, ne l'est pas forcément pour l'autre." - Mon pèrei

    Mes projets sur Github - Blog - Site DVP

  3. #3
    Membre habitué
    Homme Profil pro
    Webmaster
    Inscrit en
    Juillet 2015
    Messages
    518
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Juillet 2015
    Messages : 518
    Points : 184
    Points
    184
    Par défaut
    Je suis surpris que le problème ne soit toujours pas résolu, surtout que beaucoup de gens font un "php bin/console make:user" je veux dire c'est une commande assez basic quoi

  4. #4
    Membre habitué
    Homme Profil pro
    Webmaster
    Inscrit en
    Juillet 2015
    Messages
    518
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Juillet 2015
    Messages : 518
    Points : 184
    Points
    184
    Par défaut
    incroyable ! le problème est toujours présent dans la version 5.3.2

    voila le message d'erreur :
    Error: Class App\Entity\User contains 1 abstract method and must therefore be declared abstract or implement the remaining methods (Symfony\Component\Security\Core\User\UserInterface::getUsername)
    Alors bien-sur il suffit de rajouter la méthode getUsername dans User mais NON il ne faut pas justement car il s'agit d'une méthode dépréciée ! il suffit de voir le commentaire de la ligne 85 de UserInterface "@deprecated since Symfony 5.3, use getUserIdentifier() instead"

    Donc que faire... c'est fou !!

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2018
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2018
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Erreur dans le code source de Symfony 5.3.1
    dans l'interface UserInterface il foudra changer le nom de la méthode public function getUsername() par public function getUserIdentifier();

    dans le l'entity User il faudra aussi changé la le nom de la méthde getUsername() to getUserIdentifier().
    la migration ne change pas c'est détails il faut le faire à la mano.

  6. #6
    Membre habitué
    Homme Profil pro
    Webmaster
    Inscrit en
    Juillet 2015
    Messages
    518
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Juillet 2015
    Messages : 518
    Points : 184
    Points
    184
    Par défaut
    Citation Envoyé par raad2018 Voir le message
    dans l'interface UserInterface il foudra changer le nom de la méthode public function getUsername() par public function getUserIdentifier();
    non, très mauvaise pratique ! Ne JAMAIS modifier les sources du dossier vendor ! le problème est résolu, Symfony a résolu le problème.

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

Discussions similaires

  1. Erreur dans le code source
    Par Estomac dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 30/07/2013, 16h37
  2. Réponses: 2
    Dernier message: 20/05/2012, 18h25
  3. Réponses: 1
    Dernier message: 20/05/2011, 09h38
  4. Réponses: 2
    Dernier message: 01/06/2010, 15h03
  5. erreur dans le code source
    Par oracle.walid dans le forum C++
    Réponses: 4
    Dernier message: 06/01/2007, 16h17

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