Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Zerstörung der Objekte am Ende eines Scripts

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Zerstörung der Objekte am Ende eines Scripts

    Hallo,
    hab mal ne Frage: Wenn ein Skript zuende ist und PHP alle Objekte aufräumt, in welcher Reihenfolge geschieht das ?
    Und kann ich die Reihenfolge in irgendeiner Form beeinflussen, sodass bestimmte Objekte erst am Schluss zerstört werden ?

    Grüße
    Signatur:
    PHP-Code:
    $s '0048656c6c6f20576f726c64';
    while(
    $i=substr($s=substr($s,2),0,2))echo"&#x00$i;"

  • #2
    Sie werden in der Reihenfolge, in der sie aufgerufen wurden, beendet. Rufst du eine Klasse A in Klasse B auf, also als
    PHP-Code:
    $this->classA = new A
    so wird zunächst Klasse B(!) beendet, obwohl Klasse A eigentlich ein Objekt von Klasse B ist.
    Dass man es beeinflussen kann wüsste ich jetzt nicht, bin mir allerdings nicht sicher. Bzw. einfach Reihenfolge ändern

    Hoffe, ich konnte helfen
    Nico

    Kommentar


    • #3
      PHP-Code:
      $DB DB::getInstance();

      $sonstiges = new sonstiges();

      class 
      sonstiges{

      function 
      __destruct(){
      $DB DB::getInstance();
      $DB->query('Was auch immer');
      }

      ist also möglich ?
      Signatur:
      PHP-Code:
      $s '0048656c6c6f20576f726c64';
      while(
      $i=substr($s=substr($s,2),0,2))echo"&#x00$i;"

      Kommentar


      • #4
        Ich denke schon, da die Klasse beim Destruct von Sonstiges neu aufgerufen wird.
        Einfach ausprobieren
        Und Klassen schreibt man ohne ()

        MfG

        Kommentar


        • #5
          Und Klassen schreibt man ohne ()
          Stimmt nicht. Man kann es, aber nur, wenn der Konstruktor keine Parameter fordert. Der Einheitlichkeit zuliebe, sollte man die Klammern aber immer schreiben (natürlich nur bei der Instantiierung, nicht bei der Deklaration der Klasse, dort sind sie syntaktisch falsch).
          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


          • #6
            PHP-Code:
            class sonstiges(){
            /...

            Hab ich ausversehen geschrieben, die Klammern hat er gemeint ^^
            Signatur:
            PHP-Code:
            $s '0048656c6c6f20576f726c64';
            while(
            $i=substr($s=substr($s,2),0,2))echo"&#x00$i;"

            Kommentar


            • #7
              Achso, ich dachte, er meint die:
              PHP-Code:
              $sonstiges = new sonstiges(); 
              Aber wie ich schrieb:
              (natürlich nur bei der Instantiierung, nicht bei der Deklaration der Klasse, dort sind sie syntaktisch falsch)
              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


              • #8
                Würde ich mich nicht drauf verlassen. Hast du denn keine Stelle im Code, die am Ende ausgeführt wird? postDispatch() beim Zend Controller beispielsweise?
                "[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
                  Ok dann werde ich einfach eine Funktion einbauen die immer am Ende ausgeführt wird und wo dann diese Sachen geregelt werden ^^
                  Signatur:
                  PHP-Code:
                  $s '0048656c6c6f20576f726c64';
                  while(
                  $i=substr($s=substr($s,2),0,2))echo"&#x00$i;"

                  Kommentar

                  Lädt...
                  X