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 :

Où mettre des fonctions utilitaires dans une architecture MVC ?


Sujet :

Langage PHP

  1. #1
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 470
    Points : 5 830
    Points
    5 830
    Billets dans le blog
    1
    Par défaut Où mettre des fonctions utilitaires dans une architecture MVC ?
    Bonjour,

    mon site est construit avec une architecture MVC et en POO.
    Je compte ajouter des fonctions utilitaires, utilisables partout dans le code.
    Je voudrais savoir si mon idée est correcte : créer dans le répertoire "controller" une classe "Util" avec des méthodes statiques. Donc chaque fonction utilitaire serait implémentée dans une méthode statique et donc pas besoin d'instancier la classe pour utiliser la méthode.

    Ça donnerait, dans un des fichiers du site :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php
    use mon_projet\controller\Util;
    //et plus loin
    Util::une_Fonction_Utilitaire();
    ?>

  2. #2
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 438
    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 438
    Points : 4 936
    Points
    4 936
    Par défaut
    Bonjour,

    Il existent les traits.

    C'est presque la même chose d'une classe normale, ils ne servent qu'à grouper des fonctionnalités d'une manière optimisée.

  3. #3
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 470
    Points : 5 830
    Points
    5 830
    Billets dans le blog
    1
    Par défaut
    jamais utilisé les traits.

    Donc dans le répertoire controller :
    Util.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?php
    trait Util {
    function Une_Fonction_Utilitaire($arg1, $arg2, etc){
    ...
    return($res);
    }
    ?>
    et dans un autre fichier du site :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    {
    use mon_projet\Util\Util;
    //puis
    $ret = Util::Une_Fonction_Utilitaire($arg1, $arg2, etc);
    }
    OK ?

  4. #4
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 438
    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 438
    Points : 4 936
    Points
    4 936
    Par défaut
    Oui, c'est ça, sauf qu'il est toujours important de spécifier un nom d'espace aux traits.

  5. #5
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 470
    Points : 5 830
    Points
    5 830
    Billets dans le blog
    1
    Par défaut
    OK, donc :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php
    namespace mon_projet\controller\Util;
     
    trait Util {
       function Une_Fonction_Utilitaire($arg1, $arg2, etc){
       ...
       return($res);
       }
    }
    ?>

    OK ?

  6. #6
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 438
    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 438
    Points : 4 936
    Points
    4 936
    Par défaut
    Bonjour,

    Désolé pour le retard, mais je pense que les traits doivent être dans un dossier traits ou functions ou ce que tu veux... mais pas dans le dossier des contrôleurs, ce qui donne un nom d'espace ressemblant à namespace mon_projet\traits\Util, comme ça tu organises le code et tu regroupes les traits dans un/des dossier(s), comme tu peux même les renommer en fonction des classes qu'ils vont l'utiliser, comme par exemple un trait userUtil pour les users et un autre pour les catégories categorieUtil... ainsi de suite...

  7. #7
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 470
    Points : 5 830
    Points
    5 830
    Billets dans le blog
    1
    Par défaut
    Tous comptes faits, comme je compte utiliser ces utilitaires dans les vues et que pour créer celles-ci, j'utilise la classe PhpEcho qui fournit la possibilité de créer des méthodes utilitaires (ça s'appelle des assistants)(je le savais pas quand j'ai créé cette discussion), je passe par cela :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    //création d'un assistant
     
    $french_date = function(string $date): string {
        $date = DateTime::createFromFormat('Y-m-d', $date);
     
        return $date ? $date->format('d M y') : '';
    };
    PhpEcho::addHelper(name: 'frenchDate', helper: $french_date, result_escaped: true);
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    <?= $this('frenchDate', $actu['actu_date']) ?>

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

Discussions similaires

  1. [XL-2007] Mettre des fonctions excel dans une variable
    Par EmmanuelleC dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 24/08/2009, 14h24
  2. Mettre des JPanel(s) dans une Box
    Par Solly dans le forum Agents de placement/Fenêtres
    Réponses: 3
    Dernier message: 19/02/2009, 18h45
  3. Mettre des caractères spéciaux dans une déclaration
    Par Gunner4902 dans le forum Langage
    Réponses: 2
    Dernier message: 23/06/2008, 21h02
  4. Réponses: 2
    Dernier message: 19/09/2006, 19h06
  5. Réponses: 9
    Dernier message: 17/10/2005, 10h44

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