Ankündigung

Einklappen
Keine Ankündigung bisher.

Frage zu OOP

Einklappen

Neue Werbung 2019

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

  • Frage zu OOP

    Hallo zusammen,

    ich möchte mich jetzt auch ein wenig mit Objektorientierung beschäftigen. Nach dem durcharbeiten mehrerer Howto´s habe ich jetzt noch ein paar Fragen.

    Wie lange ist eine Instanz von einem Objekt gülitig? Ich will ein Objekt schreiben wo ein Status als Atribut angehängt wird. Diesen Status benötige ich auch wenn eine andere Seite meiner Homepage aufgerufen wird. Wird die Instanz eines Objekt nach dem Ausliefern an den Browser wieder zerstört oder "lebt" es noch weiter, bzw. kann man es noch weiterleben lassen?

    Die zweite Frage ist, wenn ich ein Attribut eines Objekts als "static" deklarieren, für wen ist das dann alles gleich? Ist dass dann nur für eine Server/Client Session gültig oder für alle Session´s die gerade auf dem Server laufen?

    Ich hoffe Ihr könnt mir weiterhelfen.

    Gruß
    Markus

  • #2
    Hallo,

    Eine Instanz, also ein Objekt hat den Gültigkeitsbereich einer ganz normalen Variablen.
    Static-Deklarationen gelten (wie übrigens alles, das nicht persistent gespeichert wird) für den aktuellen Skript-Durchlauf. In der aktuellen Laufzeitumgebung kann dann aus dem gesamten Skript darauf zugegriffen werden. Da eine Klasse nach Skriptende aber wieder aus dem Speichern entfernt wird, ist auch die Static-Deklaration weg.
    Refining Linux: “[url=http://www.refining-linux.org/archives/65/Performing-push-backups-Part-1-rdiff-backup/]Performing Push Backups – Part 1: rdiff-backup[/url]”

    Kommentar


    • #3
      "static" bezieht sich lediglich darauf, dass die Eigenschaft nun fuer die gesamte Klasse gilt und nicht wie normale Eigenschaften nur fuer das Objekt (also eine Instanz einer Klasse)

      Die Lebzeit von allem (Variablen, Objekte, Konstanten, ..), wenn nicht explizit in $_SESSON abgelegt oder anderweitig persistiert, endet am Ende des Skriptdurchlaufs.
      "[URL="http://www.youtube.com/watch?v=yMAa_t9k2VA&feature=youtu.be&t=25s"]Mein Name ist Lohse, ich kaufe hier ein.[/URL]"

      Kommentar


      • #4
        Hallo,

        danke für die Antworten.

        Gibt es eine Möglichkeit dieses Attribut der Klasse jeder Session die gerade auf dem Server läuft zur Verfügung zu stellen?


        Denn das Attribut soll später einen bestimmten Status eines Programms enthalten, dessen Ermittlung ziemlich lange dauert und deshalb will ich das eigentlich nicht die ganze Zeit ermitteln lassen sondern das irgendwie speichern.


        Gruß
        Markus

        Kommentar


        • #5
          So etwas wie das Application Object in ASP gibt es bei PHP nicht.
          Du kannst den Status vielleicht in einer (sqlite) Datenbank ablegen oder PHP: Shared Memory - Manual verwenden. Oder PHP: Memcache - Manual.

          Kommentar


          • #6
            Du kannst auch einfach den Wert des Attributs regelmäßig per Cronjob errechnen lassen und dann persistent in einer Datenbank oder im Dateisystem hinterlegen.
            Refining Linux: “[url=http://www.refining-linux.org/archives/65/Performing-push-backups-Part-1-rdiff-backup/]Performing Push Backups – Part 1: rdiff-backup[/url]”

            Kommentar


            • #7
              Hallo,

              ich habe es bisher in einer Datenbank liegen und lasse es glaub auch so.

              Ich habe es bisher halt so dass wenn die letzte Änderung mehr als eine bestimmt Anzahl von Minuten alt ist, dass wird der Status neu ermittelt.

              Ich wollte eigentlich nur OOP testen. Lass es aber mit dem Zweck wie ich es mir vorgestellt habe glaub bleiben.

              Gruß
              Markus

              Kommentar


              • #8
                Wenn du die Welt in Objekte zerlegst, kannst du viel besser mit ihnen Operieren und sie auseinander halten. Prozedurale Programmierung kennt keine Objekte und auch keine abstrakten Zustaende, nur Nachbildungen, die Zustaende muellen den globalen Variablenscope zu, es entsteht ein Durcheinander, weil alle Informationen in diesem Scope gesammelt werden. So entstehen Seiteneffekte (vielleicht wird eine Variable ueberschrieben, man weiss garnicht wer mit wem interagiert, ..). Das zu entwirren oder ueberhaupt zu verstehen ist viel schwieriger. Ein Objekt zu verstehen ist fuer einen Menschen viel einfacher. Lies dich doch einfach noch etwas ein, es gibt doch soviel Literatur dazu.
                "[URL="http://www.youtube.com/watch?v=yMAa_t9k2VA&feature=youtu.be&t=25s"]Mein Name ist Lohse, ich kaufe hier ein.[/URL]"

                Kommentar


                • #9
                  Zitat von register_globals Beitrag anzeigen
                  die Zustaende muellen den globalen Variablenscope zu
                  Das passiert aber nicht zwangsläufig bei prozeduraler Programmierung.

                  Kommentar


                  • #10
                    Wie willst dus vermeiden?
                    "[URL="http://www.youtube.com/watch?v=yMAa_t9k2VA&feature=youtu.be&t=25s"]Mein Name ist Lohse, ich kaufe hier ein.[/URL]"

                    Kommentar

                    Lädt...
                    X