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 :

[Tableaux] Probleme variable statique dans une classe


Sujet :

Langage PHP

  1. #1
    Membre averti Avatar de Joe Le Mort
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    392
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2006
    Messages : 392
    Points : 388
    Points
    388
    Par défaut [Tableaux] Probleme variable statique dans une classe
    bonjour,

    j'ai une classe nommé a l'intérieur je souhaite avoir une variable statique que je défini de la sorte :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      public static $blockParameters = array();
    ensuite je créé une fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
      function Memorizeparameters($parameters){
     
      		self::$blockParameters = array_merge(self::$blockParameters,$parameters);
      }
    ou comme ca (j'ai testé les 2..)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
      function Memorizeparameters($parameters){
     
      		DBT_cache::$blockParameters = array_merge(DBT_cache::$blockParameters,$parameters);
      }
    Le probleme est quand j'appelle cette fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $dbt_cache->Memorizeparameters($tabmobile);
    $tabmobile est un tableau non vide, contenant des infos...

    pourquoi la varaible $blockParameters n'arrive pas a recevoir les infos à partir de la fonction ? ais je fait une erreur ?
    .
    Merci
    Tuxboard Blog d'actu Buzz...
    Video de sport

  2. #2
    Membre expérimenté
    Avatar de guitou12
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 077
    Points : 1 561
    Points
    1 561
    Par défaut
    Selon Manouel

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Exemple 12-12. Les variables statiques et la récursivité
    <?php
    function Test()
    {
       static $count = 0;
       $count++;
       echo $count;
       if ($count < 10) {
           Test();
       }
       $count--;
    }
    ?>
    Note : Les variables statiques doivent être déclarées comme dans l'exemple ci-dessus. Tenter d'assigner des valeurs à ces variables qui sont le résultat d'expressions causera une erreur d'analyse.
    A priori c'est bien ce que tu fais pourtant...

    EDIT : J'ai trouvé d'où venait ton souci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php
    function foo(){
       static $int = 0;          // correct
       static $int = 1+2;        // faux  (car c'est une expression)
       static $int = sqrt(121);  // faux  (car c'est aussi une expression)
    
       $int++;
       echo $int;
    }
    ?>
    Va falloir revoir ta conception désolé !
    Ex développeur Php / J2EE.
    Actuellement reconverti à SharePoint 2013

    Mon blog SP 2013

  3. #3
    Membre averti Avatar de Joe Le Mort
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    392
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2006
    Messages : 392
    Points : 388
    Points
    388
    Par défaut
    le probleme est que je dois utiliser cette variable en dehors de la classe.

    je l'appelle par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $pageParameters = DBT_cache::$blockParameters;

    EDIT : je ne peux pas définir en tant que array() ???

    pourtant c'est correct d'écrire : static $arrSingletonObject = array();
    Tuxboard Blog d'actu Buzz...
    Video de sport

  4. #4
    Membre expérimenté
    Avatar de guitou12
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 077
    Points : 1 561
    Points
    1 561
    Par défaut
    Citation Envoyé par Joe Le Mort
    EDIT : je ne peux pas définir en tant que array() ???
    La doc dit que non.... alors elle doit avoir raison...
    Ex développeur Php / J2EE.
    Actuellement reconverti à SharePoint 2013

    Mon blog SP 2013

  5. #5
    Membre averti Avatar de Joe Le Mort
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    392
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2006
    Messages : 392
    Points : 388
    Points
    388
    Par défaut
    Citation Envoyé par guitou12
    La doc dit que non.... alors elle doit avoir raison...
    je ne pense pas
    Tuxboard Blog d'actu Buzz...
    Video de sport

  6. #6
    Membre expérimenté
    Avatar de guitou12
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 077
    Points : 1 561
    Points
    1 561
    Par défaut
    Citation Envoyé par Joe Le Mort
    Oui bon ben ton problème reste non résolu pour l'instant
    Ex développeur Php / J2EE.
    Actuellement reconverti à SharePoint 2013

    Mon blog SP 2013

  7. #7
    Membre éprouvé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    657
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 657
    Points : 910
    Points
    910
    Par défaut
    Salut,

    Quelle version de PHP utilises tu ?
    L'exemple suivant fonctionne parfaitement chez moi avec PHP 5 :

    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
     
    class Test {
      static $toto = array();
      function add($a) {
        Test::$toto = array_merge(Test::$toto, $a);
      }
    }
     
    $test = new Test();
     
    $test->add(array(1, 2, 3));
    print_r(Test::$toto);
     
    $test->add(array(4, 5, 6));
    print_r(Test::$toto);

    Affiche :

    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
     
    Array
    (
        [0] => 1
        [1] => 2
        [2] => 3
    )
    Array
    (
        [0] => 1
        [1] => 2
        [2] => 3
        [3] => 4
        [4] => 5
        [5] => 6
    )
    Toute la documentation Ruby on Rails : gotapi.com/rubyrails
    Mes articles :
    > HAML : langage de template pour Ruby on Rails

  8. #8
    Membre averti Avatar de Joe Le Mort
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    392
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2006
    Messages : 392
    Points : 388
    Points
    388
    Par défaut
    j'utilise PHP 5.1.5.

    Et comme toi, j'utilise la meme syntaxe.
    j'utilise plusieurs page, qui contiennent l'appel de la fonction avec différents parametres:
    ma page va chercher des modules dans des pages.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    page1 : 
    $dbt_cache->Memorizeparameters($tabmobile);
    page2: 
    $dbt_cache->Memorizeparameters($block);
    ....etc
    Je ne fais pas de NEW, mais global $dbt_cache;.
    Tuxboard Blog d'actu Buzz...
    Video de sport

Discussions similaires

  1. Appel Variable statique dans une autre classe ?
    Par noula_27 dans le forum Langage
    Réponses: 6
    Dernier message: 15/01/2013, 23h06
  2. [1.x] déclarer variables statiques dans une classe controller
    Par flora806 dans le forum Symfony
    Réponses: 8
    Dernier message: 15/10/2012, 17h26
  3. Réponses: 14
    Dernier message: 05/09/2006, 01h17
  4. membre statique dans une classe
    Par motrin dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 30/12/2005, 15h15
  5. Variables globales dans une classe
    Par vanitom dans le forum C++
    Réponses: 16
    Dernier message: 14/01/2005, 14h40

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