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] [Objets]Variables temporaires/permanentes?


Sujet :

Langage PHP

  1. #1
    Membre éprouvé
    Avatar de Zenol
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 812
    Points : 1 054
    Points
    1 054
    Par défaut [POO] [Objets]Variables temporaires/permanentes?
    Bonjour, je me suis poser une question concernant ls classes.
    Si je fait une class du style :
    Et que je fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $var = new Empty();
    $var->teste="blabla";
    Esque la variable teste vas mêtenent rester dnas mon objet, comme si j'avais écrit dnas la source de la classe var $teste; (a la diférence qu'il faut signifier son existance duran le code php de la page)?

  2. #2
    Membre confirmé Avatar de KibitO
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2004
    Messages
    616
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2004
    Messages : 616
    Points : 606
    Points
    606
    Par défaut
    Ta variable "test" sera renseignée dans le constructeur, ensuite pour afficher sa valeur, le mieux est d'appeler une méthode assesseur sur l'objet que tu utilises.

  3. #3
    Membre éprouvé
    Avatar de Zenol
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 812
    Points : 1 054
    Points
    1 054
    Par défaut
    Désoler je me suis male fait comprendre. Je voulais demender si je pouvais rajouter une variable dans un objet. Voici un exmeple plus parlan :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $var = new Empty;
    $var->var_{$_GET['name']} = $_GET['val'];

  4. #4
    Membre confirmé Avatar de KibitO
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2004
    Messages
    616
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2004
    Messages : 616
    Points : 606
    Points
    606
    Par défaut
    Utilise les sessions pour ça, ou alors il faut revoir ta classe..

    Je n'ai pas essayé, et toi ?

  5. #5
    Membre éprouvé
    Avatar de Zenol
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 812
    Points : 1 054
    Points
    1 054
    Par défaut
    Lol ce n'est pas l'utilisation que je vais en faire, mais c'est dnas la même idée ^^

    Non en fait je n'ai pas esseiller, je vais tester sa se soir. Sa pourais être intérèssent pour créer des structure d'objet de fasson dinamique(Par exemple, si il me venais a l'ésprit de déveloper ma propre class de parsing XML qui produirait soit des tableau, soit des objets... Opse j'ai pensser tout haut ^^)

  6. #6
    Membre confirmé Avatar de KibitO
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2004
    Messages
    616
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2004
    Messages : 616
    Points : 606
    Points
    606
    Par défaut
    Ca s'appelle de l'amélioration, de la réutilisation, donc de l'héritage.

  7. #7
    Membre confirmé Avatar de ekameleon
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    401
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 401
    Points : 483
    Points
    483
    Par défaut
    Hello

    Si j'étais toi.. je ferais pas du xml pour sérialiser des objets
    Tu as par exemple le JSON qui est vraiment performant et qui permet même de faire des transferts entre plusieurs languages comme entre du javascript et du php .. etc....

    + d'info ici :
    - http://www.crockford.com/JSON/index.html

    Regarde la liste des languages qui sont pri en compte cela vaut le coup de s'y intéresser

    EKA+

  8. #8
    Membre éprouvé
    Avatar de Zenol
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 812
    Points : 1 054
    Points
    1 054
    Par défaut
    kibito->Non, c'est toujours pas sa XD
    Je veut par exmeple faire une fonction qui retourn un objet Epty

    Mais cette objet auras par exemple la structure :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $Item->parent->enfent->value;
    Ou encore
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $Item->template->autor->"JC_Master";
    (Mence j'ai encore pensser a voie haute -_-)

    ekameleon->Je préfère développer moi même 100% du code que j'utilise. Mais merci quand même. Je sias qu'il existe une plétode de class qui gère le xml, mais je préfère travailler avec une classe plutot simple de ma création.

  9. #9
    Membre confirmé Avatar de KibitO
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2004
    Messages
    616
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2004
    Messages : 616
    Points : 606
    Points
    606
    Par défaut
    Je ne vois pas où tu veux en venir... Si ton objet est vide, il n'est pas renseigné, donc tu ne peux pas atteindre ses propriétés (value, etc.)

    Tu peux t'amuser à créer tes propres classes à partir d'une autre, d'une classe mère, bien entendu, pour personnaliser tes besoins.

  10. #10
    Membre éprouvé
    Inscrit en
    Juillet 2004
    Messages
    1 027
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 027
    Points : 1 164
    Points
    1 164
    Par défaut
    Salut,

    Il y à deux fonctions extemement puissantes dans ces cas la ( en php5 seulement).

    C'est tout simplement __get et __set.

    Avec ces deux fonctions tu peux affecter des propriete de manière pseudos dynamiquement.

    Je m'en suit servit pour une classe de repertoire.

    Sinon dans l'ide sa donnerait 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
    30
    31
    32
    33
    34
    35
     
     
    class MonParseur
    {
    private $Items; // array[XmlNodeName] = XmlNode()
     
    public function __get($rpop)
    {
    if(isset($this->Items[$prop]) )
    {
    return $this->Items["prop"];
    }
    }
    public function __set($prop , $val )
    {
    switch($prop)
    {
    case "Propprivée1":
    ...
    break;
    case "Propprivée2":
    ...
    break;
    case "Propprivée3":
    ...
    break;
    case "Propprivée4":
    ...
    break;
    default:
    $tihis->Items[$prop] = $val;
    break;
    }
    }
    }
    après sa s'utiliserait ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $xmltree->NodeName->Value;
    Ou
    $xmltree->NodeName->ChildNodeName->Value;
    pour un exemple plus concret regarde en bas de la septieme reponse de ce port
    http://www.developpez.net/forums/viewtopic.php?t=425322

    C'est juste une idée pondu vite fait, ET A NE SURTOUT PAS PRENDRE TELS QUELS... car je vois deja des trucs pas corrects...

    Sinon je suis très intéréssé par un tel developpement, je n'ai malheureusement pas eu le temps de m'en occupé jusqu'à présent mais je sui prêt à t'aider si tu veux!

    Bye

  11. #11
    Membre éprouvé
    Avatar de Zenol
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 812
    Points : 1 054
    Points
    1 054
    Par défaut
    Merrci, maleureusement beaucoup d'heberjeur sont encore en PHP4, et même si j'ai la vertion 5 de php et mysql, mon heberjeur en est encore aux vertions 4.

    Je ne peut donc pas utiliser ta technique qui aurais été la meilleur :
    Posibilitée d'acèder au tableau ET a la structure avec la même variable.

    Sinon je vais tester ce que j'ai dit précédement, c'est a dire esque si l'on défini une nouvelle variable inéxistante dans un objet, elle perdure?

    Je testerais sa se soir et alors commencerais a écrire la classe MyXml(Qui me seras utile pour MyRss et MyTemple Et je pourias même pensser a rajouter une fonction d'importation/exportation dans MySql... Ra je pensse encore a voie haute :'()

  12. #12
    Membre confirmé Avatar de KibitO
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2004
    Messages
    616
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2004
    Messages : 616
    Points : 606
    Points
    606
    Par défaut
    Tu ne développes qu'en PHP ?

  13. #13
    Membre éprouvé
    Inscrit en
    Juillet 2004
    Messages
    1 027
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 027
    Points : 1 164
    Points
    1 164
    Par défaut
    Effectivement le support de PHP5 n'est pas encore très large...

    Ceci dit autant pour de la création sa devrait pas poser trop de souci mais pour parser un fichier avc PHP4 en entrèe sa vas être la plaie :/

    Du moins je pense..

    A ce niveau la php5 possède des fonctions de base bien pratique et n'attend plus qu'une classe pour formaliser tout cela, du moins de ce que j'en ai vu.

  14. #14
    Membre éprouvé
    Avatar de Zenol
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 812
    Points : 1 054
    Points
    1 054
    Par défaut
    Non je fait du c++(enfin, pas beaucoup ces dernier temp).
    En c++ On ne peut pas faire sela, mais je voi mal comment générer un arbre Dom?!
    Je crain qu'en c++ on ne soit contrain d'utiliser un tableau, mais j'aurais espérer quelque chose de plus flexible avec php, étent donner qu'il est moin typer...

  15. #15
    Membre confirmé Avatar de ekameleon
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    401
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 401
    Points : 483
    Points
    483
    Par défaut
    Citation Envoyé par JC_Master
    ekameleon->Je préfère développer moi même 100% du code que j'utilise. Mais merci quand même. Je sias qu'il existe une plétode de class qui gère le xml, mais je préfère travailler avec une classe plutot simple de ma création.
    Je crois que tu as mal compris ce qu'il se passe sur le lien que je t'ai envoyé.... Je te dis juste que le xml c'est pas bien et qu'il y a mieux pour faire du parsing et de la sérialisation/désérialisation Aprés si tu veux réinventer la roue c'est pas un problème mais il faut malgré tout prendre le temps d'analyser toutes les possibilités non ?

    Aprés quand je vois que tu dis :
    Je crain qu'en c++ on ne soit contrain d'utiliser un tableau, mais j'aurais espérer quelque chose de plus flexible avec php, étent donner qu'il est moin typer...
    Euh .. avec du C++ tu peux faire tout ce que tu veux.. un XML c'est juste une chaine de caractère formatée avec des balises... que cela soit avec du C ou du BASIC .. on peut en faire lol

    Bref la sérialisation d'objet existe dans tous les languages et en PHP aussi et je crois d'ailleurs qu'elle est déjà intégrée... si je ne m'abuse non ? il y a une méthode qui permet de prendre une structure objet et de la sérialiser je crois ? Faudra que je vois où j'ai lu cela d'ailleurs lol

    EKA+

  16. #16
    Membre éprouvé
    Inscrit en
    Juillet 2004
    Messages
    1 027
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 027
    Points : 1 164
    Points
    1 164
    Par défaut
    Sisi sa existe sa serialize à peu près tout est n'importe quoi de souvenir. C'est assez utilisée pour le passage dans la session si mes souvenirs sont correctes

  17. #17
    Membre confirmé Avatar de ekameleon
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    401
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 401
    Points : 483
    Points
    483
    Par défaut
    A noter cet autre article sur JSON :
    http://en.wikipedia.org/wiki/JSON
    A lire pour mieux comprendre l'intérêt de formater les données ainsi et pas dans du xml... gain de poid, + grande vitesse d'analyse etc....

    EKA+

  18. #18
    Membre éprouvé
    Inscrit en
    Juillet 2004
    Messages
    1 027
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 027
    Points : 1 164
    Points
    1 164
    Par défaut
    Simple question.

    Pourquoi est qu'ils nous balance XML ceci XMl cela si le Json fait aussi bien, de manière moins lourde... ????

  19. #19
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    882
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 882
    Points : 691
    Points
    691
    Par défaut
    c'est dommage pourtant car le SDO pourrait t'apporté une solution
    on trouve quand meme pas mal d'hebergeur avec php5 mais je doute que l'on en trouve beaucoup sous 5.1.1

  20. #20
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    JSON

    Sinon en php4 :
    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
    <?php
     
    class Foo {
        var $attrs;
        function Foo() {
            $this->attrs = array();
        }
        function set($name, $value) {
            $this->attrs[$name] = $value;
        }
        function get($name) {
            if ($this->exist($name)) {
                return $this->attrs[$name];
            } else {
                trigger_error('L\'attribut '.$name.' n\'existe pas pour '.get_class($this).' !', E_USER_ERROR);
            }
        }
        function exist($name) {
            return isset($this->attrs[$name]);
        }
    }
     
    $o = new Foo();
     
    var_dump($o->exist('nom'));
    $o->set('nom', 'dupond');
    var_dump($o->exist('nom'));
    var_dump($o->get('nom'));
     
    $o->get('nop');
    ?>
    donne :
    bool(false) bool(true) string(6) "dupond"
    Fatal error: L'attribut nop n'existe pas pour foo ! in /home/nterray/CodeX/dev_server/trunk/SF/www/oo.php on line 15

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Permuter deux variables sans variable temporaire
    Par khayyam90 dans le forum Algorithmes et structures de données
    Réponses: 7
    Dernier message: 09/01/2015, 09h02
  2. [POO] Déclaration variable objet
    Par argon dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 24/04/2009, 22h17
  3. Réponses: 19
    Dernier message: 03/02/2006, 00h30
  4. C++ POO Objet
    Par Jean Frobert dans le forum Langage
    Réponses: 5
    Dernier message: 23/03/2005, 20h02
  5. [POO] Objet Navigator
    Par AssKiller dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 28/10/2004, 11h38

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