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 :

Fonctions appelées statiquement et dynamiquement


Sujet :

Langage PHP

  1. #1
    Membre actif
    Inscrit en
    Décembre 2009
    Messages
    282
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 282
    Points : 286
    Points
    286
    Par défaut Fonctions appelées statiquement et dynamiquement
    Bonjour,

    j'aimerais pouvoir appeller une fonction soit de facon statique, soit dynamique. Un Code un peu comme ca:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    class MyClass {
    	private $id = 1;
     
    	function Test() {
    		self::Test($this->id);
    	}
    	static function Test($id) {
    		echo $id;
    	}
    }
     
    new Test()->Test();     // 1
    Test::Test(2);             // 2
    Bien sur mon code ne marche pas, PHP indique "Cannot redeclare function....", mais est-ce-que quelqu'un connaitrais une astuce pour pouvoir contourner le problème.

    C'est dommage ca marche dans les autres langages genre Java ....
    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
     
    public class MyClass {
    	private int id = 1;
     
    	public void Test() {
    		MyClass.Test(this.id);
    	}
     
    	public static void Test(int id) {
    		System.out.println(id);
    	}
     
    	public static void main(String[] args) {
    		new MyClass().Test();		// 1
     
    		MyClass.Test(2);			// 2
    	}
    }
    merci d'avance,
    cordialement

  2. #2
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Salut,

    tu peux coder un truc dans ce goût là :
    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
    <?php
     
    class MyClass
    {
        private $id = 1;
     
        public function __call($name, $args)
        {
            return call_user_func_array(static::$name, $args);
        }
     
        public static function test($id)
        {
            echo $id;
        }
    }
     
    $a = new MyClass();
    $a->test(2); // ici la fonction est appelée dans un contexte dynamique alors que dans la classe elle est statique
     
    ?>
    Regarde du côté des fonctions magiques : ici
    Après : PHP !== JAVA

  3. #3
    Membre actif
    Inscrit en
    Décembre 2009
    Messages
    282
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 282
    Points : 286
    Points
    286
    Par défaut
    merci pour la réponse,

    je pense c'est pas mal, l'ennuie c'est que du coup mon editeur (Zend) va mal faire l'autocompletion je pense.

    je vérifierais lundi au boulot :p

    merci

Discussions similaires

  1. Réponses: 2
    Dernier message: 30/03/2011, 13h34
  2. Appel statique de fonction
    Par thetux dans le forum C++
    Réponses: 13
    Dernier message: 11/08/2009, 13h03
  3. Réponses: 17
    Dernier message: 13/07/2006, 12h52
  4. [MySQL] Appel d'une fonction au nom généré dynamiquement
    Par FrankOVD dans le forum PHP & Base de données
    Réponses: 14
    Dernier message: 10/06/2006, 14h36
  5. [RegEx] Trouver les appels statique et dynamique d'une class
    Par jeff_! dans le forum Langage
    Réponses: 8
    Dernier message: 07/04/2006, 16h31

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