Martino: Variable aus Klasse verfügbar machen

Hallo,

ich habe eine Variable in einer Funktion, die sich innerhalb einer Klasse (ist das eine Klasse, wenn ein Codeblock mit class { anfängt? )befindet, mit Inhalt belegt.

Wie kann ich nach Beendigung dieser meiner vermeintlichen (oder auch wirklichen) Klasse auf den Inhalt meiner Variable zugreifen?

Freundliche Grüße

Martino

  1. ich habe eine Variable in einer Funktion, die sich innerhalb einer Klasse (ist das eine Klasse, wenn ein Codeblock mit class { anfängt? )befindet, mit Inhalt belegt.

    Oft, ja.

    Wie kann ich nach Beendigung dieser meiner vermeintlichen (oder auch wirklichen) Klasse auf den Inhalt meiner Variable zugreifen?

    Dass kommt auf den Gültigkeitsbereich (Scope) der Variable an.

    1. Dass kommt auf den Gültigkeitsbereich (Scope) der Variable an.

      Hallo siuit,

      das war jetzt nicht wirklich geschickt, mir eine Gegenfrage ohne jede Option zu stellen?

      ich habe nicht den geringsten Schimmer, was Du von mir wissen willst :-))

      Ich vermute mal ins Blaue hinein, Du spielst auf den Unterschied zwischen global und define an??

      Habe aber keine Ahnung, ob ich mit der Vermutung richtig liege.

      Freundliche Grüße

      Martino

      1. das war jetzt nicht wirklich geschickt, mir eine Gegenfrage ohne jede Option zu stellen?

        Sicher war das geschickt - es regt dich zum Denken an und ermöglicht dir, aufgrund des genannten Begriffs - namentlich Gültigkeitsbereich - eine Lösung zu erarbeiten. Ich hab dir sogar den Fachbegriff genannt, mit dem du die PHP-Doku durchsuchen kannst (meinetwegen durchsuchst du auch mit der Suchmaschine deiner Wahl php.net nach dem Begriff). Auf der entsprechenden Dokumentationsseite findet sich sogar in den Kommentaren ein Hinweis darauf, was getan werden muss, damit du auf Variablen in Klassen zurückgreifen kannst.

        ich habe nicht den geringsten Schimmer, was Du von mir wissen willst :-))

        Ich ging bisher davon aus, du hättest eine Frage ;)

        Ich vermute mal ins Blaue hinein, Du spielst auf den Unterschied zwischen global und define an??

        Klär' mich bitte auf, ich steh auf der Leitung - der Unterschied zwischen "global" und "define" ist für mich etwa wie der Unterschied zwischen "dunkel" und "Tag".

        Habe aber keine Ahnung, ob ich mit der Vermutung richtig liege.

        "global" ist jedenfalls ein weiteres gutes Stichwort in diesem Kontext.

      2. Hi,

        das war jetzt nicht wirklich geschickt, mir eine Gegenfrage ohne jede Option zu stellen?

        Es ist auch nicht wirklich geschickt, Fragen zu stellen, wie du sie hast, wenn dir noch nicht mal zweifelsfrei klar ist, was eine Klasse eigentlich ist.

        ich habe nicht den geringsten Schimmer

        Eben, und daran solltest du erst mal arbeiten.
        Beschäftige dich mit den Grundlagen der Objektorientierten Programmierung allgemein, und in PHP im speziellen.

        MfG ChrisB

        --
        “Whoever best describes the problem is the person most likely to solve the problem.” [Dan Roam]
  2. Mahlzeit Martino,

    ich habe eine Variable in einer Funktion, die sich innerhalb einer Klasse (ist das eine Klasse, wenn ein Codeblock mit class { anfängt? )

    Hmmm - ob es wohl eine gute Idee ist, mal in der PHP-Dokumentation nachzuschauen?

    befindet, mit Inhalt belegt.

    Handelt es sich um eine lokale oder eine globale Variable?

    Wie kann ich nach Beendigung dieser meiner vermeintlichen (oder auch wirklichen) Klasse auf den Inhalt meiner Variable zugreifen?

    Gute Frage. Eine viel bessere Frage wäre IMHO aber: "Wie kann man eine Klasse *beenden*?"

    Ich empfehle den o.a. Link oder alternativ ein entsprechendes Tutorial zum Einstig in OOP in PHP ...

    MfG,
    EKKi

    --
    sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
    1. Gute Frage. Eine viel bessere Frage wäre IMHO aber: "Wie kann man eine Klasse *beenden*?"

      Ich denke damit war ein Destruktur gemeint ;)

    2. Hallo EKKi.

      "Wie kann man eine Klasse *beenden*?"

      Das ist einfach:

      $klasse = new Klasse("6c");  
      $klasse->start();  
      $klasse->stop(); // hier wird die Klasse beendet.
      

      Servus,
      Flo

      1. Ich vermute, mit meinen Vermutungen habe ich zu viele Fehler in die Frage hineingebracht.

        Alsolieber nochmal neu:

          
        class PDF extends FPDF { // class  
          
        function Header() { // header  
        $this->SetFont('Arial','B',16);  
        $this->SetXY(1,1);  
        ...  
        $variable="123";  
        } // header  
          
        function Footer() { // footer  
        $this->SetFont('Arial','B',16);  
        $this->SetXY(1,-9);  
        $this->Write(8,'Footer: '.$this->zf);  
        } // footer  
          
        } // class  
          
          
        $pdf=new PDF();  
          
        echo $variable;  
          
        
        

        Wie kann ich an der Stelle über den Inhalt der Variablen $variable verfügen.

        UNd wie nennt man denn den Codeblock, der hier mit class beginnt?

        Freundliche Grüße, Martino

        1. Hi,

          class PDF extends FPDF { // class

          function Header() { // header
          $this->SetFont('Arial','B',16);
          $this->SetXY(1,1);
          ...
          $variable="123";
          } // header

          function Footer() { // footer
          $this->SetFont('Arial','B',16);
          $this->SetXY(1,-9);
          $this->Write(8,'Footer: '.$this->zf);
          } // footer

          } // class

          $pdf=new PDF();

          echo $variable;

          
          >   
          > Wie kann ich an der Stelle über den Inhalt der Variablen $variable verfügen.  
            
          Direkt - gar nicht.  
          Es würde denn \*Sinn\* hinter der Kapselung, die man mit OOP u.a. anstrebt, pervertieren, wenn du einfach so Zugriff darauf hättest.  
            
          Wenn es eine Eigenschaft der Klasse und deren Sichtbarkeits-Typ public wäre - dann könntest du mit $pdf->variable darauf zugreifen.  
          Wenn der Typ ein anderer ist - dann musst du die in der Klasse für die Rückgabe dieses Wertes vorgesehene Methode aufrufen.  
            
          MfG ChrisB  
            
          
          -- 
          “Whoever best describes the problem is the person most likely to solve the problem.” [Dan Roam]
          
      2. Hello,

        "Wie kann man eine Klasse *beenden*?"

        Das ist einfach:

        $klasse = new Klasse("6c");

        $klasse->start();
        $klasse->stop(); // hier wird die Klasse beendet.

          
        Witzbold :-)  
          
        Und die Methode stop() löscht dann ihre eigene Klassen-Referenz weg?  
        Was passiert denn eigentlich, wenn man in stop() ein unset(self) reinschreibt? :-P  
          
          
          
          
          
          
          
        Liebe Grüße aus dem schönen Oberharz  
          
          
        Tom vom Berg  
        ![](http://selfhtml.bitworks.de/Virencheck.gif)  
          
        
        -- 
         ☻\_  
        /▌  
        / \ Nur selber lernen macht schlau  
        <http://bergpost.annerschbarrich.de>
        
        1. Witzbold :-)

          Und die Methode stop() löscht dann ihre eigene Klassen-Referenz weg?
          Was passiert denn eigentlich, wenn man in stop() ein unset(self) reinschreibt? :-P

          Für diesen Anwendungsfall gibts aber immer wieder sehr schräge Vorschläge.

  3. Hello,

    ich habe eine Variable in einer Funktion, die sich innerhalb einer Klasse (ist das eine Klasse, wenn ein Codeblock mit class { anfängt? )befindet, mit Inhalt belegt.

    Wie kann ich nach Beendigung dieser meiner vermeintlichen (oder auch wirklichen) Klasse auf den Inhalt meiner Variable zugreifen?

    Nach der Zerstörung der Instanz Deiner Klasse kannst Du auf keine Eigenschaften mehr zugreifen, denn ihr Speicherplatz ist dann sinnvollerweise wieder freigegeben und gehört eventuell schon lange jemand anderem.

    Allerdings kannst Du Dir einen Getter http://de.wikipedia.org/wiki/Zugriffsfunktion für bestimte Eigenschaften der Klasse erstellen. Wenn deine Methode oder Funktion in der Klasse nun ihre Variablen als Eigenschaften der Klasse abspeichert, kannst Du sie mit dem Getter auslesen, auch wenn die Eigenschaften selber von außen nicht direkt zugänglich sind (private).

    Liebe Grüße aus dem schönen Oberharz

    Tom vom Berg

    --
     ☻_
    /▌
    / \ Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de