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 :

Utiliser les Traits hors des classes


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 546
    Par défaut Utiliser les Traits hors des classes
    Bonjour,
    J'ai créé un Trait pour y mettre un certain nombre de fonctions "utilitaires" que j'utilise dans différentes classes qui n'ont rien à voir entres elles.
    Comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php
    namespace monnamespace;
    class Maclasse
    {
        use UtilTrait;
     
        // je peux accéder aux fonctions de mon trait
        public function test(){
            $a = $this->fctDuTrait();
            ...
        }
    }
    Du coup je voulais savoir s'il était aussi possible d'utiliser les Traits en dehors des classes, comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php
    namespace monnamespace;
    use UtilTrait;
     
    $a = fctDuTrait();
    Est-ce que c'est possible ?
    Si oui quelle est la syntaxe ?
    Merci

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France, Marne (Champagne Ardenne)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 60
    Par défaut
    Salut,
    Je pense que le principal intérêt des traits existe dans un contexte objet : implémenter des fonctionnalités (= des méthodes) communes à plusieurs classes, sans avoir à utiliser l’héritage ou les interfaces.
    exemple :
    Voiture et Maison n'ont aucun lien de parenté, et pourtant on pourrait imaginer une méthode de trait repeindre($color) qui modifierait l'attribut couleur de tes objets voiture et maison.

    Dans un contexte global, hors classe, tu peux utiliser des fonctions, ou même pourquoi pas implémenter ces fonctions utilitaires en tant que méthodes de classe, dans des classes "boite à outils" statiques.

    Ce n'est que mon avis

  3. #3
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    C'est un ajout à l'héritage traditionnel, qui autorise la composition horizontale de comportements, c'est à dire l'utilisation de méthodes de classe sans besoin d'héritage.
    PHP: Traits - Manual
    De ce que je comprends, l'idée est de pouvoir ajouter une méthode à une classe. Donc il faut une classe pour que ça fonctionne. Du coup, je plussoie l'avis de Nnay.

    @Nnay : bonne illustration le trait "Peinture", je le garde en mémoire :cool:
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  4. #4
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 546
    Par défaut
    Merci de vos réponses.
    Je me doutait un peu qu'on ne pouvait les utiliser que dans des classes.
    Du coup, je vais comme conseillé et créer une classe "Utilitaire" qui utilisera mon Trait.
    Merci.

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 01/04/2007, 20h13
  2. Réponses: 5
    Dernier message: 06/09/2006, 13h15
  3. Utilisation de setTimeout avec des classes : BUG!
    Par seb-oulba dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 01/09/2006, 09h43
  4. requête utilisant les jointures et des UDT
    Par dingoth dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 25/04/2006, 16h22
  5. Comment utiliser les traits?
    Par Pragmateek dans le forum C++
    Réponses: 11
    Dernier message: 11/03/2006, 19h13

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