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] Création d'une fonction static


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 [POO] Création d'une fonction static
    Bonjour, j'ai une grande question.

    mettons que j'ai :

    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
     
    class MyClass
    {
    private $_var1;
    public $var2;
    protected $_var3;
     
        public function myFunction1($param1,$param2)
        {
            $this->_var1 = $param1;
            $this->var2 = $param2;
        }
        public myFunction2($file){
            $xml = simplexml_load_file($file);
            $attribs = $xml->attributes();
            $this->_var1 = (string)$attribs['var1'];
            $this->_var3 = (string)$attribs['var3'];
     
            return true
        }
    }
    Mon but est de rendre static la function myFunction2 afin de pouvoir récupérer les éléments de $file sans avoir à instancié un objet MyClass. Et bien sûr celà sans exploser ma classe.
    Celà est'il possible et sioui comme se faisse ?

  2. #2
    Membre expérimenté
    Profil pro
    Développeur Web
    Inscrit en
    Mai 2008
    Messages
    185
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2008
    Messages : 185
    Par défaut
    Bonjour

    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
     
    class MyClass
    {
    private $_var1;
    public $var2;
    protected $_var3;
     
        public function myFunction1($param1,$param2)
        {
            $this->_var1 = $param1;
            $this->var2 = $param2;
        }
        static public myFunction2($file){
            $xml = simplexml_load_file($file);
            $attribs = $xml->attributes();
            return Array( 'var1' => (string)$attribs['var1'],
                              'var3' => (string)$attribs['var3'] )
        }
        public function attrib( array $v ){
            $this->_var1 = $v['var1'];
            $this->_var3 = $v['var3'];
            return $this;
        }
    }
    Je vois pas bien à quoi ça peux servir, mais bon ^_^'
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $c = new MyClass( );
    $c -> attrib( MyClass :: myFunction2( $file ) );

  3. #3
    Invité
    Invité(e)
    Par défaut
    Merci, mais c'est pas le résultat que j'escomptais en fait .

    En fait je voudrais que mon appel soit simplement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MyClass :: myFunction2( $file );
    sinon, effectivement çà n'as pas d'intérêt .

    En fait le problème c'est que je ne sais pas si on peut rendre une fonction static dans un contexte (classe) qui n'est pas voué à l'être.

  4. #4
    Rédacteur

    Avatar de Yoteco
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2004
    Messages
    1 099
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 099
    Par défaut
    Salut,

    Si tu veux faire ça tu dois rendre myFunction2 static et les attributs $_var1 et $_var3 également.

    Ensuite ta fonction myFunction2 devra ressembler à ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public static function myFunction2($file) {
        $xml = simplexml_load_file($file);   
        $attribs = $xml->attributes();
        self::$_var1 = (string)$attribs['var1'];
        self::$_var3 = (string)$attribs['var3'];
    
        return true;
    }
    Mais bon à ce moment là tout doit être statique... Donc pas forcément utilisable surtout si tu voudrais avoir plusieurs instances.
    Blog - Mon espace developpez -
    Oracle Certified Professional, Java SE 6 Programmer
    eZ Publish Certified developer

  5. #5
    Invité
    Invité(e)
    Par défaut
    Merci, c'est ce que je pensais. C'était surtout histoire de combler une lacune que j'avais au niveau objet.
    On ne mélange pas les torchons statique avec les serviettes instanciées ! ;-)
    Encore merci !

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 18/01/2007, 05h46
  2. Réponses: 3
    Dernier message: 15/12/2005, 22h04
  3. Réponses: 3
    Dernier message: 06/11/2005, 18h02
  4. Création d'une fonction sans paramètre?
    Par falcon dans le forum Oracle
    Réponses: 3
    Dernier message: 13/12/2004, 11h32
  5. Réponses: 14
    Dernier message: 09/04/2004, 13h44

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