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 :

Instantiation des classes POO.


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Instantiation des classes POO.
    Bonsoir tout le monde

    Je suis actuellement en train de coder mon site web en full-POO.
    Cependant je me suis posé une question récemment.

    J'ai des classes telles que UserManager, NewsManager, FileManager. Bref, elles servent à gérer les enregistrements des classes User, News, File dans la BDD et à exécuter certaines actions dessus. Cependant, je voulais savoir : devrais-je instancier ces classes (les managers) ou appeler leurs fonctions de cette manière UserManager::func(args).
    Une autre question dois-je lier les managers à chaque User (càd, je déclare un manager en passant par exemple le pseudo de l'user à __construct() et toutes les requêtes effectuées seront faites en tant que l'user) ou devrais-je passer les users en args d'une manière similaire NewsManager::add($news, $user) ?

    Merci d'avance,
    Brendan.

  2. #2
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut
    Cependant, je voulais savoir : devrais-je instancier ces classes (les managers) ou appeler leurs fonctions de cette manière UserManager::func(args).
    Des appels statiques seront légèrement plus rapide mais tu vas avoir un problème au niveau de ton objet de bdd. Qui dis méthode statique dis obligation de récupérer l'objet d'accès à la base dans chaque méthode.

    Ex :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    UserManager::foo($sql);
    UserManager::bar($sql,$x,$y);
    Au contraire si tu instancie ta classe , tu injecte une fois la dépendance à ton objet sql et tu l'utilise partout dans tes méthodes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $um = new UserManager();
    $um->setSQLObject($sql);
     
    //Dans ta class
    public function foo()
    {
        $this->sql->query(...);
    }
    Une autre question dois-je lier les managers à chaque User (càd, je déclare un manager en passant par exemple le pseudo de l'user à __construct() et toutes les requêtes effectuées seront faites en tant que l'user) ou devrais-je passer les users en args d'une manière similaire NewsManager::add($news, $user) ?
    J'ai plutôt tendance à utiliser les informations que j'ai en session sur l'utilisateur. Mais là c'est plus selon ton besoin.
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Invité
    Invité(e)
    Par défaut
    Merci de ta réponse vraiment rapide.

    Donc si je bind l'user aux managers, il me faut déclarer plusieurs managers. Dois-je les "unset()", ou se libèrent-ils seuls ? Sinon ça utilise beaucoup de mémoire non ? Penses-tu que la différence sera significative si je n'ai qu'un seul manager à qui je passe en argument l'user ?

  4. #4
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut
    Citation Envoyé par Thüzhen
    Merci de ta réponse vraiment rapide.

    Donc si je bind l'user aux managers, il me faut déclarer plusieurs managers. Dois-je les "unset()", ou se libèrent-ils seuls ?
    PHP à un garbage collector qui fait le ménage tout seul. Qui plus est à la fin d'éxecution de ton script toute (en principe) la mémoire est restituée.
    Pour finir la mémoire d'un script ça s'augmente si vraiment tu as des objets très gros.
    Bref le unset n'a d'intérêt que dans des cas très particulier comme des script qui boucle très longtemps et ou la gestion de la mémoire est délicate.

    Citation Envoyé par Thüzhen
    Sinon ça utilise beaucoup de mémoire non ? Penses-tu que la différence sera significative si je n'ai qu'un seul manager à qui je passe en argument l'user ?
    A moins que tes objets contiennent énormément de ressource l'empreinte mémoire est faible.
    Un gros manager ou 4 petit c'est de toute manière la même chose.
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. [POO] Problème héritage des classes PHP4
    Par zana74 dans le forum Langage
    Réponses: 2
    Dernier message: 15/08/2006, 17h00
  2. [POO] conception des classes
    Par poukill dans le forum C++
    Réponses: 229
    Dernier message: 19/07/2006, 09h28
  3. [POO] faire des classes en php
    Par gromit83 dans le forum Langage
    Réponses: 2
    Dernier message: 13/04/2006, 17h10
  4. [POO] [AVIS] L'utilité des classes
    Par Anduriel dans le forum Langage
    Réponses: 66
    Dernier message: 10/11/2005, 17h45
  5. [POO] PHP et la gestion des classes
    Par Acti dans le forum Langage
    Réponses: 7
    Dernier message: 23/09/2005, 01h06

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