Les traits avec PHP

Les traits en PHP est un moyen simple et rapide de réutiliser du code dans de nombreuses classes sans pour autant le dupliquer ni utiliser l'héritage des classes qui peut vite devenir lourd.

Doc officielle

Par exemple, si plusieurs de vos classe doivent tracker leur date de création :

# src/User.php
class User
{
    public \DateTime $createdAt;
    
    public function __construct()
    {
        $this->createdAt = new \DateTime();
    }  
    
    public function logCreation(): void
    {
        echo self::class . " created: " . $this->createdAt->format("Y-m-d");
    }
}

# src/Content.php
class Content
{
    public \DateTime $createdAt;
    
    public function __construct()
    {
        $this->createdAt = new \DateTime();
    }
    
    public function logCreation(): void
    {
        echo self::class . " created: " . $this->createdAt->format("Y-m-d");
    }
}

# src/UserController.php
....
$user = new User();
$this->entityManager->persist($user);
$user->logCreation(); # "User created: 2024-09-09"
...

Sans traits, ce code n'est pas centralisé, et difficile à faire évoluer, surtout si le projet devient gros.

Avec un trait cela pourrait devenir plus simple, plus facile à utiliser et plus maintenable.

Notre code devient ainsi plus réutilisable et plus maintenable. Si on voulait changer cette logique de logCreation nous pourrions le faire à un seul endroit et cela se répercuterait à un seul endroit.

circle-info

Les traits supportent les propiétés, les fonctions mais aussi les attributs ! Cela peut être pratique dans de nombreux, notamment les entités.

Par exemple, on peut imaginer un IdTrait

Vous pouvez désormais utiliser ce trait dans l'ensemble de vos entités contenant un id

Last updated