anstelle global $a,$b,$c,$d; -> global CONST;

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • anstelle global $a,$b,$c,$d; -> global CONST;

    Hallo Leute,

    Das ich eine Klasse nicht als Konstante initialisieren kann, habe ich leider bereits bemerkt.
    define(TPL, new Template());

    Da ich in einem script viele klassen habe, habe ich mir überlegt,
    ob es möglich wäre eine konstennte zu erstellen welche nur die
    variablennamen speichert:
    define(CONST, "$$tpl, $$db, $$conf, $$usw...");

    Damit müsste ich bei jeder funktion nur noch:

    function foo(){
    global CONST;
    ...
    }

    machen

    dies wäre echt praktisch, den somit müsste ich bei einer neuen klasse
    diese auch nicht mer in jeder funktion nachtragen gehen.

    leider schlugen all meine bisherigen versuche fehl.
    hat mir wer ein tipp?

    herzlichen dank
    joschua
    Nicht Tatsachen,
    sondern Meinungen über Tatsachen
    bestimmen das Handeln der Menschen.
    (Epiktet (50-138 n.Chr.)

  • #2
    Mein Vorschalg: Schreib doch alles in ein "Mega-Objekt". Dann kannst du deine benötigten Objekte immer diesem Objekt hinzufügen und brauchst in deinen Funktion nur dieses "Mega-Objekt" als global deklarieren.

    Gruß oms
    {brigens Ein Kezboard/Treiber ist v;llig [berfl[ssig!

    Kommentar


    • #3
      herzlichen dank.

      du meinst also, ich sollte die anderen klassen alle in einer klasse zb: config
      initialisieren.

      PHP-Code:
      include("db.php");
      include(
      "template.inc")
      $conf = new config;

      class 
      config{
        function 
      config(){
          
      $tpl = new template;
          
      $db = new db;
          
      //usw...
        
      }
      }

      //dan sähe zb: ei dbzugriff folgendermassen aus. ?
      $conf->$db->query("foo"); 
      hab ich das so richtig verstanden?
      Nicht Tatsachen,
      sondern Meinungen über Tatsachen
      bestimmen das Handeln der Menschen.
      (Epiktet (50-138 n.Chr.)

      Kommentar


      • #4
        Genau so, sieht doch schick aus?!
        {brigens Ein Kezboard/Treiber ist v;llig [berfl[ssig!

        Kommentar


        • #5
          hmm, naja,

          mit präprozessor wie in c/c++ wäre mir lieber gewesen..

          trotzdehm herzlichen dank, ich werd mir das nochmal überlegen.
          den wenn ich immer $klasse1->$klasse2->foo schreiben muss,
          kann ich geradesogut die klassen in den funktionen manuell hinschreiben.
          global $klasse1, $klasse2, $klasse3;
          giebt mir so sogar weniger aufwand als:
          $klasse1->$klasse2->value = $klasse1->$klasse3->foo();


          Trotzdehm Herzlichen dank.

          hab gestern noch lange nach einer anderen möglichkeit gegoogelt, faq's gelesen und selber ausprobiert. wenn jemand noch ne bessere lösung hätte, wäre ich sehr dankbar.

          joschua
          Nicht Tatsachen,
          sondern Meinungen über Tatsachen
          bestimmen das Handeln der Menschen.
          (Epiktet (50-138 n.Chr.)

          Kommentar


          • #6
            Ich hab nochmal ein bißchen rumprobiert. So kannst du es auch machen:
            PHP-Code:
            class testklasse{
               var 
            $test1;
               var 
            $test2;
               function 
            testklasse($test1,$test2){
                  
            $this->test1 $test1;
                  
            $this->test2 $test2;
               }
            }

            function 
            testfunktion(){
               echo 
            $GLOBALS[bla]->test1;
               echo 
            $GLOBALS[bla]->test2;
            }

            $GLOBALS[bla] = new testklasse(1,2);
            testfunktion(); 
            Gruß oms
            {brigens Ein Kezboard/Treiber ist v;llig [berfl[ssig!

            Kommentar


            • #7
              ja, ist ganz nett.

              jedoch wenn ich in einer funktion vier mal "$GLOBALS" geschrieben habe, könnte ich ebensogut:

              global $db, $tpl, $conf, $cms, $mod;
              schreiben.

              thx
              der etwas faule joschua
              Nicht Tatsachen,
              sondern Meinungen über Tatsachen
              bestimmen das Handeln der Menschen.
              (Epiktet (50-138 n.Chr.)

              Kommentar


              • #8
                hast du auch wieder Recht.
                letzter Versuch: schreibe den "global $tpl,..." Kram in eine extra Datei und includiere die in jeder Funktion. Wenn du dann Objekte hinzufügst, brauchst du´s nur in dieser einen Datei ändern. Natürlich hast du trotzdem einmal den Schreibaufwand.
                {brigens Ein Kezboard/Treiber ist v;llig [berfl[ssig!

                Kommentar


                • #9
                  Oder sowas:

                  PHP-Code:
                  define(CONST, "GLOBAL \$tpl, \$db, \$conf, \$usw ...;");

                  function 
                  blah() {
                      eval(CONST);

                  Sorry ... vielleicht war der Vorschlag schon da ... aber so dämliche Diskussionen verfolge ich nicht bis zu Ende ...
                  carpe noctem

                  [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
                  [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

                  Kommentar


                  • #10
                    Hi goth

                    herzlichen dank

                    aber wiso: ??
                    aber so dämliche Diskussionen verfolge ich nicht bis zu Ende
                    ist doch praktisch...
                    ich habe 4 klassen welche immer initialisiert werden. dazu kommen noch unendlich viele weiteren klassen von welchen immer eine initialisiert wird.

                    $tpl, $db, $conf, $cms und $modul ($modul ist die klasse des aufgerufenen moduls.)
                    das können gut total 50+ funktionen sein.

                    hast du eine bessere idee?
                    ich bin gespannt

                    joschua
                    Nicht Tatsachen,
                    sondern Meinungen über Tatsachen
                    bestimmen das Handeln der Menschen.
                    (Epiktet (50-138 n.Chr.)

                    Kommentar


                    • #11
                      warum arbeitest Du mit Klasse, wenn Du nicht OO arbeitest wie es scheint?
                      Beantworte nie Threads mit mehr als 15 followups...
                      Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

                      Kommentar


                      • #12
                        hi,
                        ich bin mir das arbeiten mit klassen nicht gewohnt.
                        ich arbeite zwar fast täglich mit einer db und der phplib templateklasse aber das ist auch schon alles.

                        der grund weshalb ich in diesem fall eigene klassen verwende:

                        ich habe ein progrämmchen mit diversen modulen welche ich include.
                        welche modul - klasse ich nun verwenden will hole ich aus der datenbank.

                        im groben schaut das ganze ungefähr so aus.

                        PHP-Code:
                        if($cmd->permission[$row[modulname]] == 1){
                           
                        $mod = new $row[modulname];
                           
                        $mod->init($action$id);
                        }else die(
                        "keine berechtigung!"); 
                        die anzahl der module ist variabel. je nach anspruch include ich andere module.

                        wenn jemand ein besseren vorschlag oder link hat, bin ich natürlich ganz ohr.
                        joschua
                        Zuletzt geändert von joschua; 24.01.2003, 20:28.
                        Nicht Tatsachen,
                        sondern Meinungen über Tatsachen
                        bestimmen das Handeln der Menschen.
                        (Epiktet (50-138 n.Chr.)

                        Kommentar

                        Lädt...
                        X