Globale Variable als Wert der Eigenschaft einer Klasse übernehmen

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

  • Globale Variable als Wert der Eigenschaft einer Klasse übernehmen

    Wie wäre es möglich, dass ich bsw. im Quelltext definierte Variable:

    $variable = 'Pfad';

    Diese möchte ich als Wert der Eigenschaft einer Klasse, wie kann ich diese dort global verfügbar machen?

    class Test
    {
    public $cache_pfad = $pfad;
    }

    Hier liegt der Fehler, da ich nicht mehr global auf die Variable zugreifen kann, ich könnte einfach die $variable als Konstante oder $_GLOBALS setzen, aber ich würde diese gerne so übernehmen, wie wäre das möglich?

  • #2
    schreib dir eine methode, die die variablen von aussen entgegen nimmt und setzt.

    allerdings würde ich (haupt)pfade als konstanten ablegen. ist aber geschmackssache.
    Kissolino.com

    Kommentar


    • #3
      ohne Konstante schonmal nicht.

      Übergeb den Wert an den Konstruktor
      PHP-Code:
      class MeineKlasse {
        public 
      $cache_pfad $pfad;

        public 
      MeineKlasse($pfad) {
          
      $this->cache_pfad $pfad;
        }

      EDIT:
      Oder Wurzels-Variante
      Sunshine CMS
      BannerAdManagement
      Borlabs - because we make IT easier
      Formulargenerator [color=red]Neu![/color]
      Herkunftsstatistik [color=red]Neu![/color]

      Kommentar


      • #4
        OK vielen Dank. Dann weiß ich, warum ich dazu auch in meinen vielen Büchern nichts finden konnte

        Werde dann schauen, welches die effektivste Methode ist... Danke!!!!

        Kommentar


        • #5
          Die sauberste Methode ist die von Wurzel.
          Sunshine CMS
          BannerAdManagement
          Borlabs - because we make IT easier
          Formulargenerator [color=red]Neu![/color]
          Herkunftsstatistik [color=red]Neu![/color]

          Kommentar


          • #6
            ...um das Thema nochmal aufzugreifen...

            Ich habe das gleiche Problem: Wie kann ich in einer Klasse eine Variable ansprechen, die ich global deklariert habe? Muss ich die Variable bei jeder Instanzierung als Übergabeparameter durch den Konstruktor schicken? Ich bin mir nicht sicher, wie ich Wurzels Vorschlag realisieren soll...

            Um Missverständnisse zu vermeiden:

            PHP-Code:
            <?php
            $variable 
            "hallo";

            class 
            Klasse
            {
                public function 
            Funktion ()
                {
                
            // ...
                
            }
            }
            ?>
            Funktion() soll jetzt $variable verwenden können...

            Danke, Zumm

            Kommentar


            • #7
              variables scope

              Kommentar


              • #8
                Also kann ich auch in einer Klasse eine Variable als global deklarieren, um dann auf sie zuzugreifen? Danke schonmal.

                Nun ist mir aber zu Ohren gekommen, dass das globale Deklarieren von Variablen innerhalb von Klassen unschön ist (ich bin mir nicht sicher, wie das begründet wurde).

                Ich will die Variable auch nicht verändern, sondern muss lediglich deren Wert haben. Gibt es da einen eleganteren Weg (vorrausgesetzt, dass es wirklich "unelegant" ist, innerhalb einer Klasse global zu benutzen)?

                Kommentar


                • #9
                  deine Struktur ist falsch aufgesetzt, wenn du in einer Klasse eine Variable aus dem normalen Scope brauchst... (ja, global geht, aber global ist IMMER unschön ~.~)

                  Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                  bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                  Wie man Fragen richtig stellt

                  Kommentar


                  • #10
                    Tja, da sagst du was. Offensichtlich ist meine Struktur fehlerhaft - ich gebe auch zu, dass ich nicht konsequent OOP betrieben habe, sondern lediglich eine Klasse verwendet habe, um Redundanz zu vermeiden.

                    Ich fände, dass es der Übersichtlichkeit meines Codes nicht zuträglich käme, würde ich nun für diese eine Variable ein Klassengerüst erstellen (was in einer anderen Quantität aber natürlich wesentlich mehr Sinn macht).

                    Ich erhoffe mir immer noch eine Erleuchtung (meiner- oder eurerseits), wie ich dieses Problem umgehen kann. Im Moment scheint mir die einzige Lösung, die Variable dem Konstruktor zu übergeben (und _das_ erzeugt Redundanz...).

                    Kommentar


                    • #11
                      vielleicht solltest du uns deinen Code mal zeigen? Wir labern hier um den heißen Brei rum...

                      Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                      bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                      Wie man Fragen richtig stellt

                      Kommentar


                      • #12
                        Im Prinzip sieht das so aus:

                        PHP-Code:
                        <?php
                        $kundenname 
                        $_POST["kundenname"];

                        class 
                        data_edit
                        {
                            public function 
                        get_pgsql_dataset ()
                            {
                                
                        $dataset pg_query($query);
                                return 
                        $dataset;
                            }
                        }

                        kundendaten = new data_edit;
                        $kundendaten_dataset $kundendaten->get_pgsql_dataset();
                        ?>
                        Das Ganze ist jetzt natürlich gekürzt, wir wollen hier ja auf's Wesentliche kommen ;-)

                        Ich bekomme einen Kundennamen per POST. Anschließend erstelle ich ein Objekt $kundendaten, welches mir eine Methode zum Auslesen der Datenbank zur Verfügung stellt. Das Objekt hat alle erforderlichen Daten, wie Tabellenname usw...

                        ...außer: Den Kundennamen, der ja per POST zugeschickt wurde, und den ich nun im $query brauche.

                        Läßt sich also zusammenfassen: Wie bekomme ich $kundenname in $query?

                        Kommentar


                        • #13
                          Original geschrieben von Zumm
                          Läßt sich also zusammenfassen: Wie bekomme ich $kundenname in $query?
                          In den Konstruktor oder eine Funktion set_Kundenname($name); wäre der richtige weg, global ist hier komplett falsch!
                          Der Name ist doch ein Bestandteil von den Kundendaten, also gehört das Ding auch darein

                          Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                          bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                          Wie man Fragen richtig stellt

                          Kommentar


                          • #14
                            Ja, so werde ich das machen: Eine Klasse kunden als parent von data_edit.

                            Herzlichen Dank für den Input!

                            Kommentar

                            Lädt...
                            X