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 :

Cloner une fonction


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite
    Avatar de Montor
    Homme Profil pro
    Autre
    Inscrit en
    Avril 2008
    Messages
    879
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Avril 2008
    Messages : 879
    Par défaut Cloner une fonction
    Bonjour j’ai une ptp comment je peux cloner ou assigner une fonction dans une variable sans passer par create_function
    comme avec delphi
    Code delphi : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    function somme(x,y:integer):integer;
      begin
        result:=x+y  ;
      end;
    procedure test();
    var
    varfunc : function(t,n:integer):integer;
    outs:integer;
    begin
         varfunc:= somme;
         outs:= varfunc(15,12) ; //outs=27
         showmessage(format('%d',[outs]));
    end;

  2. #2
    Membre Expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Par défaut
    Bonjour,
    je ne sais pas si le clonage est possible, mais, je ne vois pas dans quel contexte, en PHP, tu nécessiterais de cloner une fonction ?

    Tu veux peut-être parler de la meme fonction mais avec des signatures différentes ? Je crois que ce n'est pas possbile en PHP

    Tu veux peut-être faire deux appels de fonction ?

    $val1 = Somme(17,12);
    $val2 = Somme(8,91);


    Sinon il faudra que tu te penches sur la création d'une classe.

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 448
    Par défaut
    Tournes toi vers les callbacks pour faire quelque chose d'équivalent mais de bien moins joli syntaxiquement.
    http://www.php.net/manual/fr/functio...-user-func.php

  4. #4
    Membre éclairé
    Inscrit en
    Août 2004
    Messages
    499
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 499
    Par défaut
    le clonage existe
    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
    39
    40
    41
    42
    43
    44
    45
    46
    Exemple de duplication d'objets
     
     
    <?php
    class SubObject 
    {
      static $instances = 0;
      public $instance;
     
      public function __construct() {
        $this->instance = ++self::$instances;
      }
     
      public function __clone() {
        $this->instance = ++self::$instances;
      }
    }
     
    class MyCloneable 
    {
      public $objet1;
      public $objet2;
     
      function __clone() 
      {    
        // Force la copie de this->object, sinon
        // il pointera vers le même objet.
        $this->object1 = clone($this->object1);
      }
    }
     
    $obj = new MyCloneable();
     
    $obj->object1 = new SubObject();
    $obj->object2 = new SubObject();
     
    $obj2 = clone $obj;
     
     
    print("Objet original :\n");
    print_r($obj);
     
    print("Objet cloné :\n");
    print_r($obj2);
     
    ?>

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 448
    Par défaut
    d'objet pas de fonction, ni de méthode.

  6. #6
    Membre émérite
    Avatar de Montor
    Homme Profil pro
    Autre
    Inscrit en
    Avril 2008
    Messages
    879
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Avril 2008
    Messages : 879
    Par défaut
    Bonjour et merci pour ces reponse je savais que la reponse est dans une meandre de php voici cet exemple pour expliquer le problème de vitesse et encombrement

    Methode 1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    	$operation='/';
    	 foreach ($input as $keys=>$vals)
    	 	{
    		 switch($operation)
    	 		{
    				case '+':$out[]=$vals[0]+$vals[1];break; 
    				case '-':$out[]=$vals[0]-$vals[1];break; 
    				case '*':$out[]=$vals[0]*$vals[1];break; 
    				case '/':$out[]=$vals[0]/$vals[1];break; 
    			}
    		}
    Methode 2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    $tab=array( 
    		'+'=>create_function('$a,$b','return $a+$b;'),
    		'-'=>create_function('$a,$b','return $a-$b;'),
    		'*'=>create_function('$a,$b','return $a*$b;'),
    		'/'=>create_function('$a,$b','return $a/$b;')
    	   );
     
    	$operation='/';
    	$fonction=$tab[$operation];
    	foreach ($input as $keys=>$vals)
    	 	{
    			$out[]=$fonction($vals[0]+$vals[1]);
    		}
    Mais create_function va créer des nouvelles fonctions et pas les cloner
    je vais essayer avec call_user_func et merci encore

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

Discussions similaires

  1. Comment chronométrer une fonction
    Par 323 dans le forum Pascal
    Réponses: 3
    Dernier message: 19/03/2003, 20h24
  2. Appeler une fonction avec/sans parenthèses
    Par haypo dans le forum Algorithmes et structures de données
    Réponses: 8
    Dernier message: 29/12/2002, 18h48
  3. [VBA-E] avec une fonction value
    Par laas dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 28/11/2002, 13h22
  4. [Turbo Pascal] Allocation et désallocation de pointeurs dans une fonction
    Par neird dans le forum Turbo Pascal
    Réponses: 13
    Dernier message: 17/11/2002, 20h14
  5. Une fonction avec des attributs non obligatoires
    Par YanK dans le forum Langage
    Réponses: 5
    Dernier message: 15/11/2002, 13h39

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