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 :

[POO] Connaître la fin d'exécution d'un fonction


Sujet :

Langage PHP

  1. #1
    Membre régulier Avatar de Shandler
    Profil pro
    Inscrit en
    Février 2005
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 514
    Points : 107
    Points
    107
    Par défaut [POO] Connaître la fin d'exécution d'un fonction
    Bonjour a tous,

    J'ai créé une classe ci-dessous qui est édulcoré. Cette classe récupère des paramètre et les insères dans un tableau mais voila j'aimerais savoir quand ma fonction a fini de prendre les paramètre pour les insérer dans le tableau.

    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
    class Ma_classe
    { 
      var $tab_parametre = array();
      var $tab_champ  = array();   
     
    	function Ma_classe()
    	{
     
    	}
     
      function param($champ,$parametre) 
      {
         array_push($this->tab_parametre,$parametre);
         array_push($this->tab_champ,$champ);  
     
          $this->verif();  
      }
     
      function verif() 
      {
          //Mon pb est que pour que array_combine faut que le remplissage des         
         //tableaux dans la fonction param soit termine.
     
    $this->tab_champ=array_combine($this->tab_champ,$this->tab_parametre);
     
    $tab_param_verif = array('cd','vhs','dvd','mp3');
     
            foreach($this->tab_champ as $param)
            {               
                if(!in_array($param,$tab_param__verif))
                {
                  return false;
                }
            }
     
     
       }
    }
    L'initialisation de cette classe se passe comme ci-dessous :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $Ma_classe= new Ma_classe();
     
    $Ma_classe->Param('Paul','cd');
    $Ma_classe->Param('Raymond','dvd');
    $Ma_classe->Param('Nom','mp3');
    En esperant avoir été clair merci a vous.

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 448
    Points : 2 284
    Points
    2 284
    Par défaut
    Salut,

    A lecture de ton post, j'y voit deux lectures possibles.....


    Cas 1, lors du changement de fonction de param vers verif :
    Nous nous placons donc ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
      function param($champ,$parametre) 
      {
         array_push($this->tab_parametre,$parametre);
         array_push($this->tab_champ,$champ);  
     
         // Très précisément ici.....
     
          $this->verif();  
      }
    Je pense que tu te poses un faux problème. L'execution de PHP est strictement sequentielle et il n'existe que très peu de cas où le flux d'execution peut être asynchrone.

    Donc lorsque la fonction param aura été complètement executé, et seulement à ce moment précis, PHP ira dans la fonction verif.

    Cas 2, tu souhaites être capable de déterminer si le développeur à terminer de remplir l'instance via la fonction param.
    Dans ce cas nous nous placons donc ici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $Ma_classe= new Ma_classe();
     
    $Ma_classe->Param('Paul','cd');
    $Ma_classe->Param('Raymond','dvd');
    $Ma_classe->Param('Nom','mp3');
     
    // Précisément ici......
    Pour gérer ce cas de figure, il n'y à a priori pas trente six solutions.
    Soit tu adaptes ton algo de la fonction verif pour ne pas avoir à déterminer cet instant de l'execution.
    Ou alors, tu laisses le controle de la fonction verif au développeur, car il est le seul à savoir quand il a terminé de remplir l'objet en cours.

    La deuxième proposition est la moins élégante, de plus a la lecture de ton code, j'imagine que tu souhaites éviter les doublons dans le tableau (je peut me tromper...).
    Cette vérification peut très bien être réalisée en interne dans ton instance, lors de l'appel à la fonciton param, sans que le développeur n'en soit au courant.
    Tu as en effet à ta disposition tous les éléments necessaires à cette opération.

    La classe ressemblerait alors à ceci :

    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
     
    class Ma_classe
    { 
      var $tab_parametre;  // ce ne sont pas des attributs static, on ne les instancie pas ici
      var $tab_champ;     // ce ne sont pas des attributs static, on ne les instancie pas ici
     
     
      function Ma_classe()
      {
         $this->tab_parametre = array();
         $this->tab_champ  = array();   
      }
     
      function verifParam(  $champ,$parametre)
      {
         // A implementer
      }
      function param($champ,$parametre) 
      {
         if( $this->verifParam(  $champ,$parametre) == false )
              return false;
     
     
         array_push($this->tab_parametre,$parametre);
         array_push($this->tab_champ,$champ);  
     
         return true;
      }
    }
    voila,
    bye

  3. #3
    Membre régulier Avatar de Shandler
    Profil pro
    Inscrit en
    Février 2005
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 514
    Points : 107
    Points
    107
    Par défaut
    Merci de ton aide trés clair donc voila ce que je veux faire et bien plus ta dernière explication mais comme tu disait si je fais un print_r() sur $this->tab_parametre j'arrive a la fin a mon tableau complet mais entretemps il m'affiche chaque étape donc certaine qui se répète.

    Aurais tu une idée pour palier a ce problème ou sinon c'est pas grave je m'en débrouillerez ainsi. En tous cas merci beaucoup de ton aide.

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 448
    Points : 2 284
    Points
    2 284
    Par défaut
    Je n'ai pas compris ta réponse.

  5. #5
    Membre régulier Avatar de Shandler
    Profil pro
    Inscrit en
    Février 2005
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 514
    Points : 107
    Points
    107
    Par défaut
    C'est bon ca marche merci a toi.

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

Discussions similaires

  1. [Vista]Comment attendre la fin d'exécution d'un processus ?
    Par gb_68 dans le forum Threads & Processus
    Réponses: 9
    Dernier message: 15/06/2007, 23h17
  2. mavaise fin d'exécution de mon script .sql
    Par super_dz dans le forum Oracle
    Réponses: 4
    Dernier message: 13/05/2007, 14h30
  3. [9iR2] l'heure de fin d'exécution d’une commande ?
    Par Mehdilis dans le forum Oracle
    Réponses: 2
    Dernier message: 02/04/2007, 19h29
  4. [Système] Détection de fin d'exécution
    Par Xris dans le forum Langage
    Réponses: 2
    Dernier message: 01/02/2007, 10h15
  5. Attendre la fin d'exécution d'un page en JS
    Par TekP@f dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 26/08/2005, 15h15

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